我正在使用 JBoss AS 7.0.2.Final,没有机会更改它。
我尝试配置 standalone.xml 为不同的类别创建不同的日志文件。我的问题是:每个记录器的输出都正确附加在指定的文件上,但也写入了 server.log 文件。
这是我的整个日志子系统配置:
<subsystem xmlns="urn:jboss:domain:logging:1.1">
<console-handler name="CONSOLE" autoflush="true">
<level name="INFO"/>
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
</console-handler>
<periodic-rotating-file-handler name="FILE" autoflush="true">
<level name="INFO"/>
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="server.log"/>
<suffix value=".yyyy-MM-dd"/>
<append value="true"/>
</periodic-rotating-file-handler>
<periodic-rotating-file-handler name="REQUEST" autoflush="true">
<level name="INFO"/>
<formatter>
<pattern-formatter pattern="%m%n"/>
</formatter>
<file path="/Logs/requests.log"/>
<suffix value=".yyyy-MM-dd-HH"/>
<append value="true"/>
</periodic-rotating-file-handler>
<periodic-rotating-file-handler name="ALARMS" autoflush="true">
<level name="INFO"/>
<formatter>
<pattern-formatter pattern="%m%n"/>
</formatter>
<file path="/Logs/alarms.log"/>
<suffix value=".yyyy-MM-dd-HH"/>
<append value="true"/>
</periodic-rotating-file-handler>
<logger category="com.maucho.alarm" use-parent-handlers="false">
<level name="INFO"/>
<handlers>
<handler name="ALARMS"/>
</handlers>
</logger>
<logger category="com.maucho.request" use-parent-handlers="false">
<level name="INFO"/>
<handlers>
<handler name="REQUEST"/>
</handlers>
</logger>
<logger category="com.arjuna">
<level name="WARN"/>
</logger>
<logger category="org.apache.tomcat.util.modeler">
<level name="WARN"/>
</logger>
<logger category="sun.rmi">
<level name="WARN"/>
</logger>
<logger category="com.hp.autopassj">
<level name="WARN"/>
</logger>
<logger category="org.jboss.as.server.deployment">
<level name="ERROR"/>
</logger>
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</root-logger>
</subsystem>
当启动 AS 时,standalone.xml 文件被覆盖并替换没有属性 use-parent-handlers="false"的记录器标签,将行为设置为其默认值,use-parent-handlers="true":
<subsystem xmlns="urn:jboss:domain:logging:1.1">
<console-handler name="CONSOLE" autoflush="true">
<level name="INFO"/>
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
</console-handler>
<periodic-rotating-file-handler name="FILE" autoflush="true">
<level name="INFO"/>
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="server.log"/>
<suffix value=".yyyy-MM-dd"/>
<append value="true"/>
</periodic-rotating-file-handler>
<periodic-rotating-file-handler name="REQUEST" autoflush="true">
<level name="INFO"/>
<formatter>
<pattern-formatter pattern="%m%n"/>
</formatter>
<file path="/Logs/requests.log"/>
<suffix value=".yyyy-MM-dd-HH"/>
<append value="true"/>
</periodic-rotating-file-handler>
<periodic-rotating-file-handler name="ALARMS" autoflush="true">
<level name="INFO"/>
<formatter>
<pattern-formatter pattern="%m%n"/>
</formatter>
<file path="/Logs/alarms.log"/>
<suffix value=".yyyy-MM-dd-HH"/>
<append value="true"/>
</periodic-rotating-file-handler>
<logger category="com.maucho.alarm">
<level name="INFO"/>
<handlers>
<handler name="ALARMS"/>
</handlers>
</logger>
<logger category="com.maucho.request">
<level name="INFO"/>
<handlers>
<handler name="REQUEST"/>
</handlers>
</logger>
<logger category="com.arjuna">
<level name="WARN"/>
</logger>
<logger category="org.apache.tomcat.util.modeler">
<level name="WARN"/>
</logger>
<logger category="sun.rmi">
<level name="WARN"/>
</logger>
<logger category="com.hp.autopassj">
<level name="WARN"/>
</logger>
<logger category="org.jboss.as.server.deployment">
<level name="ERROR"/>
</logger>
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</root-logger>
</subsystem>
文档很差,说我只需要输入参数 use-parent-handlers="false"但它不起作用。
此外,我还将我的代码 org.apache.log4j.Logger 更改为 org.apache.commons.logging.Log 和 org.apache.commons.logging.LogFactory 并得到相同的结果,两个文件中的日志输出(/Logs/requests.log 或/Logs/alarms.log 和 server.log)。
我的引用资料: https://community.jboss.org/message/731527 http://commons.apache.org/logging/guide.html
最佳答案
这是一个非常古老的线程,但以防万一有人正在寻找解决此问题的方法。属性名称中有错字,缺少“s”。这是设置以使其正常工作的属性- 使用-parent-handler**s**=false
关于java - 如何从 JBoss AS 7.0.2.Final 的 server.log 中排除记录器类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12379454/