欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java不通过配置文件初始化logger示例

程序员文章站 2024-02-26 19:27:40
复制代码 代码如下:import org.apache.log4j.consoleappender;import org.apache.log4j.fileappender...

复制代码 代码如下:

import org.apache.log4j.consoleappender;
import org.apache.log4j.fileappender;
import org.apache.log4j.level;
import org.apache.log4j.logger;
import org.apache.log4j.patternlayout;


public class loggerutils {

 /**
  * 创建logger实例
  *
  * @param clazz  事件日志发生类
  * @param ifconsole 是否输出到控制台
  * @param iffile  是否输出到文件
  * @param logfile  日志文件地址(路径分割使用“/”)
  * @param iflocate 是否定位事件日志发生位置(类.方法 line)
  * @return logger
  */
 public static logger getlogger(class<?> clazz, boolean ifconsole, boolean iffile, string logfile, boolean iflocate) {

  if(ifconsole == false && iffile == false) return null;

  if(iffile == true && logfile.trim().length() < 1) return null;

  string conversionpattern;
  if(iflocate == true) {
   // 日志内容形式如:2014-03-11 01:34:45.572 [debug] com.aliyun.qa.utils.loggerutilstest.main(line:15): 测试debug日志
   conversionpattern = "%d{yyyy-mm-dd hh:mm:ss.sss} [%-5p] %c.%m(line:%l): %m %n";
  } else {
   // 日志内容形式如:2014-03-11 01:34:45.572 [debug] : 测试debug日志
   conversionpattern = "%d{yyyy-mm-dd hh:mm:ss.sss} [%-5p] : %m %n";
  }
  patternlayout layout = new patternlayout();
  layout.setconversionpattern(conversionpattern);

  logger logger = logger.getlogger(clazz);
  logger.removeallappenders();
  logger.setlevel(level.debug);
  logger.setadditivity(false);     // logger不会在父logger的appender里输出,默认为true

  if(ifconsole == true) {  // 日志输出到控制台
   consoleappender consoleappender = new consoleappender();
   consoleappender.setlayout(layout);
   consoleappender.setthreshold(level.info);  // consoleappender日志级别为debug
   consoleappender.activateoptions();
   logger.addappender(consoleappender);
  }

  if(iffile == true) {  // 日志输出到文件
   fileappender fileappender = new fileappender();
   fileappender.setlayout(layout);
   fileappender.setfile(logfile);
   fileappender.setencoding("utf-8");
   fileappender.setappend(true);
   fileappender.setthreshold(level.info);   // fileappender日志级别为info
   fileappender.activateoptions();
   logger.addappender(fileappender);
  }

  return logger;
 }

 /**
  * 创建logger实例(仅输出到控制台)
  *
  * @param clazz  事件日志发生类
  * @param iflocate 是否定位事件日志发生位置(类.方法 line)
  * @return logger
  */
 public static logger getlogger(class<?> clazz, boolean iflocate) {
  return getlogger(clazz, true, false, null, iflocate);
 }

 /**
  * 创建logger实例(仅输出到文件)
  *
  * @param clazz  事件日志发生类
  * @param logfile  日志文件地址(路径分割使用“/”)
  * @param iflocate 是否定位事件日志发生位置(类.方法 line)
  * @return logger
  */
 public static logger getlogger(class<?> clazz, string logfile, boolean iflocate) {
  return getlogger(clazz, false, true, logfile, iflocate);
 }

}