29 using ptr = std::shared_ptr<LogSink>;
40 virtual void log(
const char *data,
size_t len) = 0;
77 void log(
const char *data,
size_t len)
86 std::cout.write(data, len);
99 std::string logMessage(message, len);
102 std::vector<std::pair<std::string, std::string>> logLevels = {
109 for (
auto &level : logLevels)
112 while (pos < logMessage.size())
114 size_t found = logMessage.find(level.first, pos);
115 if (found == std::string::npos)
117 logMessage.replace(found, level.first.size(), level.second);
118 pos = found + level.second.size();
156 assert(
_ofs.is_open());
166 void log(
const char *data,
size_t len)
168 _ofs.write(data, len);
198 _ofs.open(pathname, std::ios::binary | std::ios::app);
199 assert(
_ofs.is_open());
209 void log(
const char *data,
size_t len)
215 _ofs.open(pathname, std::ios::binary | std::ios::app);
216 assert(
_ofs.is_open());
220 _ofs.write(data, len);
238 localtime_r(&t, <);
239 std::stringstream filename;
240 filename <<
_basename << lt.tm_year + 1900 << lt.tm_mon + 1 << lt.tm_mday << lt.tm_hour << lt.tm_min << lt.tm_sec <<
"-" <<
_cnt++ <<
".log";
241 return filename.str();
272 return std::make_shared<SinkType>(std::forward<Args>(
args)...);
文件日志落地实现
Definition sink.hpp:142
FileSink(const std::string &pathname)
构造函数
Definition sink.hpp:151
std::string _pathname
文件路径
Definition sink.hpp:173
void log(const char *data, size_t len)
日志写入到文件
Definition sink.hpp:166
std::ofstream _ofs
文件输出流
Definition sink.hpp:174
抽象日志落地基类
Definition sink.hpp:27
virtual ~LogSink()
Definition sink.hpp:31
std::shared_ptr< LogSink > ptr
智能指针类型
Definition sink.hpp:29
LogSink()
Definition sink.hpp:30
virtual void log(const char *data, size_t len)=0
日志输出
基于文件大小的滚动文件日志落地实现
Definition sink.hpp:183
size_t _current_fsize
当前文件大小
Definition sink.hpp:248
std::ofstream _ofs
文件输出流
Definition sink.hpp:246
void log(const char *data, size_t len)
日志写入到滚动文件
Definition sink.hpp:209
size_t _cnt
文件计数
Definition sink.hpp:249
RollSinkBySize(const std::string &basename, size_t max_size)
构造函数
Definition sink.hpp:193
std::string creatNewFIle()
创建新文件
Definition sink.hpp:233
std::string _basename
基础文件名
Definition sink.hpp:245
size_t _max_fsize
最大文件大小
Definition sink.hpp:247
日志落地对象工厂类
Definition sink.hpp:259
static LogSink::ptr create(Args &&...args)
创建日志落地对象
Definition sink.hpp:270
标准输出日志落地实现
Definition sink.hpp:49
Color _enable_color
颜色启用状态
Definition sink.hpp:132
const std::string COLOR_INFO
INFO 颜色
Definition sink.hpp:127
void log(const char *data, size_t len)
日志写入到标准输出
Definition sink.hpp:77
const std::string COLOR_ERROR
ERROR 颜色
Definition sink.hpp:129
Color
日志颜色设置
Definition sink.hpp:56
const std::string COLOR_FATAL
FATAL 颜色
Definition sink.hpp:130
StdoutSink(Color enable=Color::Unenable)
构造函数
Definition sink.hpp:65
const std::string COLOR_DEBUG
DEBUG 颜色
Definition sink.hpp:126
const std::string COLOR_RESET
颜色重置
Definition sink.hpp:131
std::string setColorBasedOnLogLevel(const char *message, size_t len)
根据日志级别设置颜色
Definition sink.hpp:97
const std::string COLOR_WARN
WARN 颜色
Definition sink.hpp:128
static size_t getTime()
获取当前时间戳
Definition util.hpp:32
static void createDirectory(const std::string &pathname)
创建目录及其父级目录
Definition util.hpp:82
static std::string path(const std::string &pathname)
获取文件路径
Definition util.hpp:68