Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
Appender.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#include "Appender.h"
7#include "Common.h"
9
10std::string LogMessage::getTimeStr(time_t time)
11{
12 tm aTm;
13 Skyfire::LocalTime(time, aTm);
14 char buf[72];
15 snprintf(buf, sizeof(buf), "%04d-%02d-%02d_%02d:%02d:%02d", aTm.tm_year + 1900, aTm.tm_mon + 1, aTm.tm_mday, aTm.tm_hour, aTm.tm_min, aTm.tm_sec);
16 return std::string(buf);
17}
18
20{
21 return getTimeStr(mtime);
22}
23
24Appender::Appender(uint8 _id, std::string const& _name, AppenderType _type /* = APPENDER_NONE*/, LogLevel _level /* = LOG_LEVEL_DISABLED */, AppenderFlags _flags /* = APPENDER_FLAGS_NONE */) :
25 id(_id), name(_name), type(_type), level(_level), flags(_flags) { }
26
28
30{
31 return id;
32}
33
34std::string const& Appender::getName() const
35{
36 return name;
37}
38
40{
41 return type;
42}
43
45{
46 return level;
47}
48
50{
51 return flags;
52}
53
55{
56 level = _level;
57}
58
60{
62 return;
63
64 message.prefix.clear();
66 message.prefix.append(message.getTimeStr());
67
69 {
70 if (!message.prefix.empty())
71 message.prefix.push_back(' ');
72
73 char text[MAX_QUERY_LEN];
74 snprintf(text, MAX_QUERY_LEN, "%-5s", Appender::getLogLevelString(message.level));
75 message.prefix.append(text);
76 }
77
79 {
80 if (!message.prefix.empty())
81 message.prefix.push_back(' ');
82
83 message.prefix.push_back('[');
84 message.prefix.append(message.type);
85 message.prefix.push_back(']');
86 }
87
88 if (!message.prefix.empty())
89 message.prefix.push_back(' ');
90
91 _write(message);
92}
93
95{
96 switch (level)
97 {
99 return "FATAL";
101 return "ERROR";
103 return "WARN";
105 return "INFO";
107 return "DEBUG";
109 return "TRACE";
110 default:
111 return "DISABLED";
112 }
113}
AppenderType
Definition Appender.h:29
AppenderFlags
Definition Appender.h:37
@ APPENDER_FLAGS_PREFIX_TIMESTAMP
Definition Appender.h:39
@ APPENDER_FLAGS_PREFIX_LOGFILTERTYPE
Definition Appender.h:41
@ APPENDER_FLAGS_PREFIX_LOGLEVEL
Definition Appender.h:40
LogLevel
Definition Appender.h:16
@ LOG_LEVEL_DISABLED
Definition Appender.h:17
@ LOG_LEVEL_TRACE
Definition Appender.h:18
@ LOG_LEVEL_WARN
Definition Appender.h:21
@ LOG_LEVEL_ERROR
Definition Appender.h:22
@ LOG_LEVEL_INFO
Definition Appender.h:20
@ LOG_LEVEL_FATAL
Definition Appender.h:23
@ LOG_LEVEL_DEBUG
Definition Appender.h:19
#define MAX_QUERY_LEN
Definition Common.h:195
std::uint8_t uint8
Definition Define.h:79
LogLevel getLogLevel() const
Definition Appender.cpp:44
std::string name
Definition Appender.h:89
virtual void _write(LogMessage const &)=0
uint8 id
Definition Appender.h:88
LogLevel level
Definition Appender.h:91
AppenderType getType() const
Definition Appender.cpp:39
AppenderFlags getFlags() const
Definition Appender.cpp:49
AppenderType type
Definition Appender.h:90
uint8 getId() const
Definition Appender.cpp:29
virtual ~Appender()
Definition Appender.cpp:27
std::string const & getName() const
Definition Appender.cpp:34
AppenderFlags flags
Definition Appender.h:92
static const char * getLogLevelString(LogLevel level)
Definition Appender.cpp:94
void write(LogMessage &message)
Definition Appender.cpp:59
Appender(uint8 _id, std::string const &name, AppenderType type=AppenderType::APPENDER_NONE, LogLevel level=LogLevel::LOG_LEVEL_DISABLED, AppenderFlags flags=APPENDER_FLAGS_NONE)
Definition Appender.cpp:24
void setLogLevel(LogLevel)
Definition Appender.cpp:54
bool LocalTime(time_t const &time, tm &result)
Definition TimeUtils.h:57
static std::string getTimeStr(time_t time)
Definition Appender.cpp:10
std::string type
Definition Appender.h:56
std::string getTimeStr()
Definition Appender.cpp:19
time_t mtime
Definition Appender.h:60
LogLevel level
Definition Appender.h:55
std::string prefix
Definition Appender.h:58