purebasic.info

PureBasic forum
Текущее время: Пн сен 16, 2019 1:47 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Небольшой логгер.
СообщениеДобавлено: Пт сен 06, 2019 7:51 pm 
Не в сети
студент
Аватар пользователя

Зарегистрирован: Сб авг 31, 2019 6:51 pm
Сообщений: 9
Откуда: Россия, Киров
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Для себя писал логгер удобства ради, может кому пригодится.
Советы по улучшению и оптимизации приветствуются, ну а если кто-то захочет добавить фич - буду только рад :)

logger.pbi
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
 
DeclareModule Logger
  Declare Init(logFilePath.s, fOpenConsole.a)
  Declare Destruct(logFileIndex.a)
  Declare pLog(logFileIndex.a, logLine.s, logType.a)
 
  Enumeration
    #LOG_TYPE_ERROR
    #LOG_TYPE_INFO
    #LOG_TYPE_DEBUG
  EndEnumeration
EndDeclareModule
 
Module Logger
 
  Enumeration
    #LOG_TYPE_ERROR
    #LOG_TYPE_INFO
    #LOG_TYPE_DEBUG
  EndEnumeration
 
  Macro NL
    Chr(13) + Chr(10)
  EndMacro
 
  Global Dim logFiles.a(32)
  Global cOpened.a = #False
 
  Procedure Init(logFilePath.s, fOpenConsole.a)
    If fOpenConsole
      If Not cOpened
        _rcopen.b = OpenConsole()
        If _rcopen
          ConsoleTitle("Logger")
          cOpened = #True
        Else
          ProcedureReturn #False
        EndIf
      EndIf
    EndIf
   
    For i.a = 0 To ArraySize(logFiles())
      If logFiles(i) = #False
        _rsl = OpenFile(i, logFilePath, #PB_File_Append)
        If _rsl
          logFiles(i) = #True
          ProcedureReturn i
        Else
          ProcedureReturn -1
        EndIf
      EndIf
    Next i
  EndProcedure
 
  Procedure Destruct(logFileIndex.a)
    If logFiles(logFileIndex) = #True
      CloseFile(logFileIndex)
      logFiles(logFileIndex) = #False
      ProcedureReturn #True
    Else
      ProcedureReturn #False
    EndIf
  EndProcedure
 
  Procedure pLog(logFileIndex.a, logLine.s, logType.a)
    If(cOpened)
      ConsoleColor(0, 8)
      Print("LOG-> ")
      ConsoleColor(15, 0)
      Print("  " + FormatDate("(%mm.%dd.%yyyy) [%hh:%ii:%ss] ", Date()))
     
      Select logType
        Case #LOG_TYPE_DEBUG
          ConsoleColor(0, 10)
          Print(" DEBUG ")
        Case #LOG_TYPE_ERROR
          ConsoleColor(0, 12)
          Print(" ERROR ")
        Case #LOG_TYPE_INFO
          ConsoleColor(0, 14)
          Print(" INFO  ")
        Default
          ProcedureReturn #False
      EndSelect
     
      ConsoleColor(7, 0)
      PrintN(": " + logLine)
    EndIf
   
    If Not logFiles(logFileIndex)
      ProcedureReturn #False
    EndIf
   
    sLogType.s = ""
    Select logType
        Case #LOG_TYPE_DEBUG
          sLogType = "DEBUG"
        Case #LOG_TYPE_ERROR
          sLogType = "ERROR"
        Case #LOG_TYPE_INFO
          sLogType = "INFO"
        Default
          ProcedureReturn #False
    EndSelect
     
    formatedStr.s = "LOG " + FormatDate("(%mm.%dd.%yyyy) [%hh:%ii:%ss] ", Date()) + sLogType + ": " + logLine + NL
    WriteString(logFileIndex, formatedStr)
   
    ProcedureReturn #True
  EndProcedure
EndModule
 



test.pb
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
XIncludeFile "logger.pbi"
 
mainLogFile = Logger::Init("./log.txt", #True)
 
Logger::pLog(mainLogFile, "Test...", Logger::#LOG_TYPE_INFO)
Logger::pLog(mainLogFile, "Test...", Logger::#LOG_TYPE_ERROR)
Logger::pLog(mainLogFile, "Test...", Logger::#LOG_TYPE_DEBUG)
 
Logger::Destruct(mainLogFile)
 
While #True
Wend
 


_________________
Изображение


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB