我正在创建一个日志文件系统。日志文件将采用json格式,因此服务器可以读取它,但我不认为这太重要了。我需要知道的是,log4j可以配置为写入文件,但文件中没有任何标签,如info,debug,timestamp等。我看过这里
但是这会将文件与其他内容一起使用。我只希望我写的数据显示在文件中。如果在达到最大尺寸后它变得太大,我还想在文件上设置某种文件旋转。
答案 0 :(得分:1)
你想要的是只有%m%n的PatternLayout,并结合前面提到的问题here的答案
答案 1 :(得分:1)
这相对容易,使用log4j.properties
配置文件(将其放在类路径的顶部,Log4j将“找到它”):
# This is the default logger, simply logs to console
log4j.logger.com.foo.bar=DEBUG,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
# Note the Pattern here, emits a lot of stuff - btw, don't use this in production
# %C is expensive - see the Javadoc for ConversionPattern for the meaning of all
# the % modifiers:
log4j.appender.A1.layout.ConversionPattern=%d{MMM dd, HH:mm:ss} [%C{2}] %-5p - %m%n
# Logging to file can be enabled by using this one
log4j.logger.com.example=DEBUG, R
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=/var/log/generic.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
# This is the most minimalist layout you can have: just the 'm'essage is emitted
# (and a \n newline):
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%m%n
com.foo.bar
包(和子包)中的所有类都将登录到控制台,com.example
(及以下)中的类将登录到/var/log/generic.log
。
要发出JSON,只需使用Jackson
(com.fasterxml
)将数据转换为JSON对象并将其作为字符串写出来。
答案 2 :(得分:0)
你应该能够编写一个自定义日志appender,我有一个模糊的回忆,有一个例子用MongoDB做这个。 MongoDD将其数据存储为JSON,因此在插入之前它已将日志转换为json格式。
我首先会搜索一个MondgoDB appender,并查看附带的文件appender,如果一个appender已经存在,它应该为你提供一个起点。