【问题标题】:Log4j to write json array to diskLog4j 将 json 数组写入磁盘
【发布时间】:2014-03-10 01:10:18
【问题描述】:

我正在创建一个日志文件系统。日志文件将采用 json 格式,因此服务器可以在之后读取它,但我认为这不太重要。我需要知道的是 log4j 是否可以配置为写入文件,但文件中没有任何标签,如信息、调试、时间戳等。我看过这里

但这会用其他东西污染文件。我只希望我写的数据显示在文件中。如果在达到最大大小后文件变得太大,我还想在文件上设置某种文件旋转。

【问题讨论】:

    标签: java logging log4j filewriter


    【解决方案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 对象并将其写为字符串。

    【讨论】:

    • 谢谢。你能告诉我这行是什么意思吗:#保留一个备份文件 log4j.appender.R.MaxBackupIndex=1 假设我将其更改为 3。这是否意味着我将拥有文件 generic1.log、generic2.log 和 generic3。记录???
    • 不客气。基本上是的:我认为命名将更像 generic.1.log 等(更容易用 glob 解析/处理)
    【解决方案2】:

    您想要的是仅带有 %m%n 的 PatternLayout,并结合之前提出的问题 here 的答案

    【讨论】:

      【解决方案3】:

      您应该能够编写自定义日志附加程序,我模糊记得有一个使用 MongoDB 执行此操作的示例。 MongoDD 将其数据存储为 JSON,因此它在插入之前将日志转换为 json 格式。

      我将从搜索 MondgoDB 附加程序开始,然后查看随附的文件附加程序,如果不存在附加程序,这应该会为您提供一个起点。

      http://log4mongo.org/display/PUB/Home

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-24
        • 1970-01-01
        • 2017-10-12
        • 2021-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-19
        相关资源
        最近更新 更多