Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复日志配置文件,以正确的格式返回正确的日志级别?_Java_Logging_Log4j_Wildfly - Fatal编程技术网

Java 如何修复日志配置文件,以正确的格式返回正确的日志级别?

Java 如何修复日志配置文件,以正确的格式返回正确的日志级别?,java,logging,log4j,wildfly,Java,Logging,Log4j,Wildfly,我是一个相当初级的开发人员,试图在代码中实现日志配置文件,以便不同的组件可以使用不同的日志级别。然而,这似乎不起作用。有两个关键问题: 调整日志记录级别似乎对某些组件的生产没有影响 我已经更新了我的MANIFEST.MF以包含“profile”,它似乎认识到这一点并将一些条目发布到日志文件中,但它似乎严重依赖于根级别,而不是每个类别。 特定的包日志级别似乎不起作用 有些条目返回到同一行,我该如何处理?我似乎在网上找不到有同样问题的东西 10:23:18047信息[标准输出](通用类-20)10:

我是一个相当初级的开发人员,试图在代码中实现日志配置文件,以便不同的组件可以使用不同的日志级别。然而,这似乎不起作用。有两个关键问题:

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

  • 有些条目返回到同一行,我该如何处理?我似乎在网上找不到有同样问题的东西

  • 10:23:18047信息[标准输出](通用类-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>
    

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

    最后,我认为您不需要日志配置文件来实现这一点。您只需要在日志子系统上定义
    大小旋转文件处理程序
    com.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

    获取调试消息嗨,James,谢谢您的回复。如果我错了,请纠正我的错误,但你是说我无法根据“org.*”配置文件链接到的组件将其分配到不同的日志级别。例如,如果我在myProject1和myProject2上使用“org.springframework”,并且希望springframework在1上使用调试,但在另一个上使用错误,这是不可能的,并且我不需要使用日志记录配置文件来分离项目日志记录?目前,当我运行我的应用程序时,profile.log中没有返回任何内容。您完全可以为不同的记录器名称/类别分配不同的级别。由于您将根记录器设置为
    INFO
    ,因此无需将其他记录器定义为
    INFO
    ,尽管您肯定可以这样做。如果将Spring库放在部署中,则可以使用日志配置文件。如果它们作为一个模块安装,就不能使用日志配置文件。谢谢James,添加spring库似乎已经解决了这个问题!