是否有允许对对象进行结构化日志记录的日志库,我的意思是,输出是以结构化的形式出现的,如JSON或XML?
在应用程序级别,我希望使用简洁的语法(日志记录往往隐藏应用程序代码),例如
logger.info("Deleting user", user)logger.info(part("Deleting user", user), part("Account", account), part("Something else", someValue));在日志文件级别,我得到了良好的结构化JSON ( etc),以元数据(线程、MDC、时间、级别等)作为信封,其中包含我自己的消息作为结构化的JSON对象。
"log" : {
"time": <timestamp>,
"level": "INFO",
"thread": <thread-name>,
"MDC": [MDC info added by application code],
etc...
"message": {
"Message": "Deleting User",
"User": <JSON object of the user serialised>
}
}当然,它不需要很好地打印在日志文件中。
如果域对象(例如用户)能够实现一个Loggable接口,该接口具有序列化不同日志级别的状态的方法,这将是很酷的。
*一些日志聚合器可以在语义级别上理解日志。日志是一致格式化的,允许搜索等。*
在过去,我实现了几个函数,这些函数为我提供了方法的一部分,以确保键/值对是格式化的,但这并不能给出我想要的一切。这是可行的,规范键值/值、格式化值、突出显示空值等,但它不发出JSON,也不能委托对象格式化:-
logger.info(logString(part("Deleting user", user), part("Account", account), part("Something else", someValue)));有什么想法吗?
发布于 2017-02-17 12:22:24
您可以使用JSONObject.toString()方法在logcat上漂亮地打印JSON。
Log.d("tag", jsonObject.toString(4));https://stackoverflow.com/questions/42297710
复制相似问题