java - Log4j2 json 配置不写入文件

标签 java json logging log4j2

我在资源目录下有这个 log4j2.json 文件

{
    "configuration": {
        "status": "TRACE",
        "name": "App",
        "monitorInterval": "300",
        "appenders": {
            "appender": [
                {
                    "type": "Console",
                    "name": "STDOUT",
                    "PatternLayout": {
                        "pattern": "%m%n"
                    }
                },
                {
                    "type": "RollingFile",
                    "name": "RollingFile",
                    "PatternLayout": {
                        "pattern": "%m%n"
                    },
                    "filename": "console.log",
                    "filePattern": "$${date:yyyy-MM}/console-%d{MM-dd-yyyy}-%i.log",
                    "TimeBasedTriggeringPolicy": {
                        "interval": 24,
                        "modulate": true
                    }
                },
                {
                    "type": "RollingFile",
                    "name": "text-roll",
                    "PatternLayout": {
                        "pattern": "%d %p %c{1.} [%t] %m %ex%n"
                    },
                    "filename": "info.log",
                    "filePattern": "$${date:yyyy-MM}/info-%d{MM-dd-yyyy}-%i.log",
                    "TimeBasedTriggeringPolicy": {
                        "interval": 24,
                        "modulate": true
                    }
                },
                {
                    "type": "RollingFile",
                    "name": "json-roll",
                    "JsonLayout": {
                        "complete": true,
                        "compact": true,
                        "eventEol": true
                    },
                    "filename": "json.log",
                    "filePattern": "$${date:yyyy-MM}/json-%d{MM-dd-yyyy}-%i.log",
                    "TimeBasedTriggeringPolicy": {
                        "interval": 24,
                        "modulate": true
                    }
                }
            ]
        },
        "loggers": {
            "logger": [
                {
                    "name":"Console Root",
                    "level": "debug",
                    "AppenderRef": {
                        "ref": "STDOUT"
                    }
                },
                {
                    "name":"Console Output",
                    "level": "trace",
                    "AppenderRef": {
                        "ref": "RollingFile"
                    }
                },
                {
                    "name":"Info",
                    "level": "info",
                    "AppenderRef": {
                        "ref": "text-roll"
                    }
                },
                {
                    "name":"Json",
                    "level": "error",
                    "AppenderRef": {
                        "ref": "json-roll"
                    }
                }
            ],
            "root": {
                "AppenderRef": {
                    "ref": "STDOUT"
                }
            }
        }
    }
}

虽然它确实创建了这些文件,但从不写入任何内容。 在console.log中,info.log为空。但是 json.log 有这样的内容:

[

]

]

]

]

]

]

这是启动服务器进行 log4j 初始化后的控制台: Gist of the console output

最佳答案

我不确定,但根据唯一未调试的日志行,

Log4j appears to be running in a Servlet environment, but there's no log4j-web module available. If you want better web container support, please add the log4j-web JAR to your web archive or server lib directory.

那个 jar 存在吗?

关于java - Log4j2 json 配置不写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33887073/

相关文章:

JavaScript:在两个对象数组中查找匹配和差异

node.js - 查看 electron-builder 打包的AppX软件包的日志

c# - ASP Core 2 空 POST 请求

mysql - 如何在 MySQL 中启用、使用和分析慢查询日志?

linux - 一次查看多个日志的最佳方式?

java - SonarQube 规则 "Methods returns should not be invariant"带 catch block

java - 方法描述性名称是为了简单比较还是直接比较?

java - 从 JAR 中提取并加载 DLL

java - 如何使用 swing 和 clojure 制作动画?

php - mysqli使用mysql变量错误