-
Notifications
You must be signed in to change notification settings - Fork 2
Home
public static final Logger LOG = LogFactory.getLogger(); // Concise
// use placeholder
LOG.error("Hello {}, welcome to {}", "GUYS", "jrretyLog Demo");
if( LOG.isDebugEnabled() ) { // Local log level control
LOG.error(e, "Some additional tips....");
}
直接引入jrrety-log的jar包即可用。jrrety-log的日志有Trace、Debug、Info、Warm、Error等级别。如果不配置,它默认使用TRACE级别,使用Java的System.out标准输出流,在控制台来输出日志。
如果想自定义日志输出级别,或者日志输出的方式,可以在jrrety-log.properties文件中配置。
在classpath中新建一个名为jrrety-log.properties的文件,例如maven项目在如下地址 src/main/resources/jrrety-log.properties
内容如下:
rootLogger=TRACE,STDOUT
appender.STDOUT.layout.className=simple
logger.com.myproject.demo=INFO
第一行是主要配置,指出日志阀门的级别和日志的实现方式。
1)第一个参数,TRACE代表日志的阀门值为“TRACE级别”。低于TRACE级别的日志,将不会打印。这个是全局性的日志级别。
2)第二个参数,是日志的实现方式。可以指定用何种日志程序来输出日志。比如STDOUT,它是jrrety-Log日志库自带的STDOUT标准输出,换句话说,就是用Java的System.out来输出。还有LOG4J,表示使用Log4j来输出日志(需要引入Log4j的jar包)。除了jrrety-log中自带的STDOUT和LOG4J外,还支持自定义的日志实现类,
比如com.demo.log.TreLog4jLogger,任何继承于org.jrrety.log.LoggerSupport的日志实现类都可以(在第三节“高级用法”中会详细说明)。
第二行是日志实现方式的具体配置。
1)当实现方式为STDOUT时,支持的配置如下
appender.STDOUT.layout.className=simple
表示输出日志时,前缀的类名称的形式,
1)类的全名(比如org.jrrety.log.ConsoleAppender),
2)短名称(比如ConsoleAppender)。当配置为simple时,日志输出时用类的短名称,如果不配置或者配置其他值,则用类全名。
第三行是设置特定包的日志级别。
1)格式为logger.包路径。例如,上面设置的是logger.org.jrrety.dbk=INFO,则表示对于org.jrrety.dbk包,设置的日志级别为INFO级别。 这个级别比全局级别高时,才会其作用,比如说全局级别为ERROR,这个地方你设置成INFO就没任何作用,道理很简单,全局级别的优先级更高。
2)可以设置多个特定的包日志级别。
一个简单的例子如下:
public class TreLog4jLogger implements org.jrrety.log.Logger, LoggerSupport {
private static final String FQCN = LoggerWrapper.class.getName();
private transient org.apache.log4j.Logger logger;
public TreLog4jLogger(){
}
public TreLog4jLogger(String name) {
this.logger = org.apache.log4j.Logger.getLogger(name);
}
@Override
public org.jrrety.log.Logger newInstance(String name) {
return new TreLog4jLogger(name);
}
@Override
public void info(Object message) {
logger.log(FQCN, Level.INFO, message, null);
}
@Override
public void info(Throwable e) {
logger.log(FQCN, Level.INFO, Utils.ExceptionUtil.getStackTraceStr(e), null);
}
//...省略其他debug、warn方法,它们都和info方法类似。
}
示例如下:动态刷新日志开关
LogManager.refreshLogConfig(configMap);
LogManager.refreshLogConfig(configFileName);
See Log-monitor.