【问题标题】:How do I fix my logging-profile to return the correct log levels in the correct format?如何修复我的日志记录配置文件以以正确的格式返回正确的日志级别?
【发布时间】:2018-07-05 14:15:02
【问题描述】:

我是一名相当初级的开发人员,并尝试在我的代码中实现 Logging-Profiles,以便不同的组件可以使用不同的日志记录级别。但是,这似乎不起作用。有两个关键问题:

  1. 调整日志记录级别似乎对某些组件正在生成的内容没有影响 我已经更新了我的 MANIFEST.MF 以包含“配置文件”,它似乎认识到这一点并将一些条目发布到日志文件中,但它似乎严重依赖于根级别而不是每个类别。 特定的包日志级别似乎不起作用

  2. 某些条目在同一行返回,我该如何解决?我似乎在网上找不到任何有相同问题的东西

10:23:18,047 信息 [标准输出] (genericClass-20) 10:23:18.047 [genericClass-20] 错误 org.hibernate.engine.jdbc.spi.SqlExceptionHelper - javax.resource.ResourceException: IJ000453: 无法得到管理 java的连接

这就是我的独立版:

<logging-profiles>
    <logging-profile name="profile">
        <size-rotating-file-handler name="SIZE" autoflush="true">
            <file relative-to="jboss.server.log.dir" path="profile.log"/>
            <rotate-size value="30m"/>
            <max-backup-index value="99"/>
            <append value="true"/>
        </size-rotating-file-handler>
        <logger category="com.myproject" use-parent-handlers="false">
            <level name="DEBUG"/>
                <handlers>
                    <handler name="SIZE"/>
                </handlers>
            </logger>
        <logger category="org.apache" use-parent-handlers="false">
            <level name="INFO"/>
            <handlers>
                <handler name="SIZE"/>
            </handlers>
        </logger>
        <logger category="org.hibernate" use-parent-handlers="false">
            <level name="INFO"/>
            <handlers>
                <handler name="SIZE"/>
            </handlers>
        </logger>
        <logger category="org.springframework" use-parent-handlers="false">
            <level name="INFO"/>
            <handlers>
                <handler name="SIZE"/>
            </handlers>
        </logger>
        <root-logger>
            <level name="INFO"/>
            <handlers>
                <handler name="SIZE"/>
            </handlers>
        </root-logger>
    </logging-profile>
</logging-profiles>

【问题讨论】:

    标签: java logging log4j wildfly


    【解决方案1】:

    查看您的配置,您至少应该在您的profile.log 文件中获得com.myproject 日志。您可能不会在该文件中获得任何 org.hibernate 日志,因为任何全局模块都将始终记录到默认系统日志配置中。

    最后,我认为您不需要日志配置文件即可使其正常工作。您只需要在日志子系统上定义size-rotating-file-handlercom.myproject 处理程序。以下是您要用于配置日志记录子系统的 CLI 命令

    /subsystem=logging/size-rotating-file-handler=SIZE:add(autoflush=true, append=true, rotate-size="30m", max-backup-index=99, file={relative-to="jboss.server.log.dir", path="profile.log"})
    /subsystem=logging/logger=com.myproject:add(level=DEBUG)
    /subsystem=logging/root-logger=ROOT:add-handler(name=SIZE)
    

    给定默认配置以及这些命令,所有消息都将记录到默认控制台和文件处理程序以及您的 SIZE 处理程序中。默认文件处理程序和您的SIZE 处理程序都会从​​com.myproject 获取调试消息。

    【讨论】:

    • 嗨,詹姆斯,感谢您的回复。如果我错了,请纠正我,但您是说我无法根据链接到的组件将“org.*”配置文件分配给不同的日志级别。例如,如果我在 myProject1 和 myProject2 上使用 'org.springframework' 并希望 springframework 在 1 上使用 DEBUG 但在另一个上使用 ERROR 这是不可能的而且我不需要使用日志记录配置文件来分隔项目日志记录?目前,当我运行我的应用程序时,profile.log 中没有返回任何内容
    • 您绝对可以为不同的记录器名称/类别分配不同的级别。由于您将根记录器设置为INFO,因此无需将其他记录器定义为INFO,尽管您绝对可以。 如果您将 Spring 库放入部署中,则可以使用日志记录配置文件。如果它们作为模块安装,则无法使用日志记录配置文件。
    • 感谢 James,添加 spring 库似乎已经解决了问题!
    猜你喜欢
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2010-09-13
    • 2015-08-05
    相关资源
    最近更新 更多