Jboss文档的位置:http://jbossas.jboss.org/docs
Jboss支持以下日志框架
JBoss Logging - included with JBoss Enterprise ApplicationPlatform 6
Apache Commons Logging - http://commons.apache.org/logging/
Simple Logging Facade for Java (SLF4J) - http://www.slf4j.org/
Apache log4j - http://logging.apache.org/log4j/1.2/
Java SE Logging(java.util.logging)
一般使用的日志级别
TRACE,DEBUG, INFO, WARN, ERROR,FATAL.
默认的日志文件
EAP_HOME/standalone/log/boot.log The server boot log. Contains log messages relatedto the startup of the server.
EAP_HOME/standalone/log/server.log The Server Log. Contains all log messages once theserver has launched
standalone.xml中与日志相关的默认配置
<subsystemxmlns="urn:jboss:domain:logging:1.1">
<console-handlername="CONSOLE">
<levelname="INFO"/>
<formatter>
<pattern-formatterpattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
</console-handler>
<periodic-rotating-file-handlername="FILE">
<formatter>
<pattern-formatterpattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
<filerelative-to="jboss.server.log.dir" path="server.log"/>
<suffixvalue=".yyyy-MM-dd"/>
<appendvalue="true"/>
</periodic-rotating-file-handler>
<root-logger>
<level name="INFO"/>
<handlers>
<handlername="CONSOLE"/>
<handlername="FILE"/>
</handlers>
</root-logger>
</subsystem>
可以看出其默认包含一个root-logger(这个应该也是一个loggercategory),其包含的handler为CONSOLE与FILE,一个负责在控制台输出,一个负责在文件中输出log
如何使用JBoss Logging框架来记录log
开发时需要导入jboss-logging-*.jar 或者在pom.xml中加入对这个的provided依赖(jboss server中包含这个jar)
import org.jboss.logging.*;
定义logger
private static final Logger loghandler = Logger.getLogger("HelloWorld.class");
使用logger
loghandler.info(fsdfffff");
如何使用Slf4j框架来记录log
Slf4j提供一套统一的日志api , 记日志的具体功能由底层的日志框架去实现
Sl4j api 会自动的去找底层的日志框架
Jboss提供了对slf4j的支持,其应该是定制实现了slf4j-api-*.jar, 同时实现了slf4j-jboss-logmanager-*.jar
我猜测这个slf4j-jboss- *.jar应该就属于slf4j中adaption layer一层(http://www.slf4j.org/manual.html), 具体记日志应该还是由jboss-logging-*.jar来做的
现在如果想增加一种日志,例如event.log
1. 修改standalone.xml,增加这种日志的category和对应的handler
<periodic-rotating-file-handlername="EVENTLOG" autoflush="true">
<formatter>
<pattern-formatterpattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-6p (%t) %m%n"/>
</formatter>
<filerelative-to="jboss.server.log.dir" path="event.log"/>
<suffixvalue=".yyyy-MM-dd"/>
<appendvalue="true"/>
</periodic-rotating-file-handler>
<loggercategory="EventLog" use-parent-handlers="false">
<levelname="INFO"/>
<handlers>
<handlername="EVENTLOG"/>
</handlers>
</logger>
category和handler可以定义哪些属性,可以看jboss相关的schema定义jboss-as-logging_*.xsd,在docs/schema目录下
2. 开发程序时需要导入slf4j-api-*.jar或者加上对其的provided 依赖
import org.slf4j.*;
定义logger
private static final Logger loghandler= LoggerFactory.getLogger("EventLog"(这个是在standalone.xml中定义的日志级别));
使用logger
loghandler.info("fsdfffff");