C++ 新手,写了一个简单的 log 小工具。
使用了 appender、format 正交设计。支持多个 appender。appender 只实现了 FileLoggerAppender 和 ConsoleLoggerAppender ; format 只实现了 PlainTextFormat。
还简单的支持 template 参数。
使用方式:
auto_ptr<Logger> logger(new Logger());
auto_ptr<LoggerAppender> fileLoggerAppender(new FileLoggerAppender());
auto_ptr<LoggerAppender> consoleLoggerAppender(new ConsoleLoggerAppender());
auto_ptr<PlainTextLoggerFormat> plainTextLoggerFormat(new PlainTextLoggerFormat());
logger.get()->loggerAppender(fileLoggerAppender.get())
->loggerAppender(consoleLoggerAppender.get())
->loggerFormat(plainTextLoggerFormat.get());
string errorMessage("num1: {} add number2: {}, sum : {}");
logger.get()->e(errorMessage, "10", "20", "30");
output:
[ERROR] 2018-12-2 23:41:40: num1: 10 add number2: 20, sum : 30
还有一个小问题,想请教下。
num1: {} add number2: {}, sum : {}
只能传入 10, 20, 30 的字符串,而不能传入 int 类型的参数。
我这里使用了 va_args 的实现,不能直接判断参数类型。不知道大神们有没有其他方式实现呢?
谢谢解疑。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.