Jboss 7 AS - 结合standalone.xml日志配置和每个部署日志记录配置

时间:2017-06-08 06:12:03

标签: java jboss jboss7.x

我正在使用JBoss 7 AS,我在这个JBoss中部署了很少的耳朵。 standalone.xml已配置以下日志记录配置

<subsystem xmlns="urn:jboss:domain:logging:3.0">
.
.
.
.
            <console-handler name="CONSOLE">
                <level name="INFO"/>
                <formatter>
                    <pattern-formatter pattern="%K{level}%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
                </formatter>
            </console-handler>
.
.
.
.
            <size-rotating-file-handler autoflush="true" name="MAINLOGFILE">
                <formatter>
                    <pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
                </formatter>
                <file path="mainlog.log" relative-to="jboss.server.log.dir"/>
                <append value="true"/>
                <rotate-size value="1m"/>
                <max-backup-index value="1000"/>
            </size-rotating-file-handler>  

然后我尝试将一个logging.properties文件添加到一个耳朵META-INF中,它按预期进行。 我想再次从该logging.properties文件中引用一个处理程序(stanalone.xml中定义的MAINLOGFILE)(我将其放入了一个耳朵的META-INF)。 这是logging.properties看起来像:

loggers=my.testpackage

logger.my.testpackage.level=INFO
logger.my.testpackage.handlers=EXTFILE,MAINLOGFILE
logger.my.testpackage.useParentHandlers=true 

    handler.EXTFILE=org.jboss.logmanager.handlers.PeriodicRotatingFileHandler
    handler.EXTFILE.level=ALL
    handler.EXTFILE.formatter=PATTERN
    handler.EXTFILE.properties=autoFlush,append,fileName,suffix
    handler.EXTFILE.constructorProperties=fileName,append
    handler.EXTFILE.autoFlush=true
    handler.EXTFILE.append=true
    handler.EXTFILE.fileName=${jboss.server.log.dir}/mytest.log
    handler.EXTFILE.suffix=.yyyy-MM-dd

    formatter.COLOR-PATTERN=org.jboss.logmanager.formatters.PatternFormatter
    formatter.COLOR-PATTERN.properties=pattern
    formatter.COLOR-PATTERN.pattern=%K{level}%d{HH\:mm\:ss,SSS} %-5p [%c] (%t) %s%E%n

    formatter.PATTERN=org.jboss.logmanager.formatters.PatternFormatter
    formatter.PATTERN.properties=pattern
    formatter.PATTERN.pattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} %-5p [%c] (%t) %s%E%n

但是登录到EXTFILE的条目没有登录到MAINLOGFILE。 我的期望是登录到EXTFILE的每个条目都应该在MAINLOGFILE中可见

请帮我找出一种方法来引用每个部署loggign.properties文件中standalone.xml中定义的日志处理程序。

谢谢。

1 个答案:

答案 0 :(得分:0)

您真的需要在应用中使用日志配置吗?您可以在jboss日志记录子系统中轻松定义记录器处理程序,该子系统针对特定的包甚至是部署的应用程序中的类:

<!-- all classes in `my.testpackage` package should only print INFO and up into mainlog.-->
<logger category="my.testpackage" use-parent-handlers="true">
   <level name="INFO"/>
   <handlers>
      <handler name="MAINLOGFILE"/>
   </handlers>
</logger>
 <!-- This class should print DEBUG and up into mainlog.-->
<logger category="my.testpackage.SuperImportantClass" use-parent-handlers="true">
   <level name="DEBUG"/>
   <handlers>
      <handler name="MAINLOGFILE"/>
   </handlers>
</logger>

优点:您可以通过JBoss的cli or web admin interface轻松添加此配置,作为一个很好的奖励,您可以在运行时更改它,而无需重新启动服务器或您的webapp。如果需要,您可以将配置部分作为分发流程的一部分,例如使用jboss创建自己的docker镜像,使用您的app部署和cli / config。