Skip to content
Zollty Tsou edited this page Jan 18, 2017 · 2 revisions

一、简单用法示例

  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....");
  }

二、基本用法说明

1、基本使用

直接引入jrrety-log的jar包即可用。jrrety-log的日志有Trace、Debug、Info、Warm、Error等级别。如果不配置,它默认使用TRACE级别,使用Java的System.out标准输出流,在控制台来输出日志。

2、简单配置

如果想自定义日志输出级别,或者日志输出的方式,可以在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)可以设置多个特定的包日志级别。

三、高级用法

1、自定义Logger实现类

一个简单的例子如下:

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方法类似。
}

2、动态刷新日志工厂的阀门级别。

示例如下:动态刷新日志开关

LogManager.refreshLogConfig(configMap);

LogManager.refreshLogConfig(configFileName);

可以引入Log-monitor插件,在线查看和配置日志。

See Log-monitor.