log4j不同级别日志完全分开打印




可以自由收藏管理个人常用网址的导航网     666导航网   

默认的log4j 打印日志输出的文件中低级别会包含高级别日志,比如定义了输出级别为info,则日志文件中会包含了:info以及比info高级别的warn,error等信息,造成文件的冗余,通过继承log4j的原始类,重写isAsSevereAsThreshold方法 只判断级别是否相等,不判断优先级

代码如下:

public class LogUtil  extends DailyRollingFileAppender {
	static {
/*这里要注意,项目运行起来后,会自动加载src下面的log4j.properties配置文件,不需要在代码里手动引入,否则日志信息会重复打印两遍,如果文件名不是log4j.properties,则需要手动指定配置文件路径*/
		//PropertyConfigurator.configure("log4j.properties");// :读取使用Java的特性文件编写的配置文件。
	}
	public boolean isAsSevereAsThreshold(Priority priority) {    
        //只判断是否相等,而不判断优先级     
      return this.getThreshold().equals(priority);    
   }   
	public static boolean DEBUG = true;
	public static boolean DEBUG_LESSER = true;
	private static Logger logger = Logger.getLogger("");
	private static final String tag = "netty ";

	private static SimpleDateFormat sdf = new SimpleDateFormat("MM/dd HH:mm:ss", Locale.getDefault());
	
	//==========================5个打印级别===========================================================
	
		public static void logDebug(String str) {
			if (DEBUG)
				logger.debug(tag + "#T#" + sdf.format(new Date()) + "$T$ #M#" +str + "$M$");
		}

		public  static void logInfo(String str) {
			if (DEBUG)
				logger.info(tag + "#T#" + sdf.format(new Date()) + "$T$ #M#" +str + "$M$");
		}
		
		public static void logWarn(String str) {
			if (DEBUG)
				logger.warn(tag + "#T#" + sdf.format(new Date()) + "$T$ #M#" +str + "$M$");
		}
		
		public static void logError(String str) {
			if (DEBUG)
				logger.error(tag + "#T#" + sdf.format(new Date()) + "$T$ #M#" +str + "$M$");
		}
		
		public static void logFatal(String str) {
			if (DEBUG)
				logger.fatal(tag + "#T#" + sdf.format(new Date()) + "$T$ #M#" +str + "$M$");
		}
}



下面是配置文件log4j.properties

log4j.rootLogger= Console,Info,Warn, Error,Fatal

#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.Threshold = OFF  

#Info
log4j.appender.Info=com.xcinfo.cool.util.LogUtil
log4j.appender.Info.File=./cold_chain_log_info.log
log4j.appender.Info.layout=org.apache.log4j.PatternLayout
log4j.appender.Info.Threshold = INFO
log4j.appender.Info.File.DatePattern='.'yyyy-MM-dd'.log'

#Warn
log4j.appender.Warn=com.xcinfo.cool.util.LogUtil
log4j.appender.Warn.File=./cold_chain_log_warn.log
log4j.appender.Warn.layout=org.apache.log4j.PatternLayout
log4j.appender.Warn.Threshold = DEBUG
log4j.appender.Warn.File.DatePattern='.'yyyy-MM-dd'.log'

#Error
log4j.appender.Error=com.xcinfo.cool.util.LogUtil
log4j.appender.Error.File=./cold_chain_log_err.log
log4j.appender.Error.layout=org.apache.log4j.PatternLayout
log4j.appender.Error.Threshold = ERROR 
log4j.appender.Error.File.DatePattern='.'yyyy-MM-dd'.log'

#Fatal
log4j.appender.Fatal=com.xcinfo.cool.util.LogUtil
log4j.appender.Fatal.File=./cold_chain_log_fatal.log
log4j.appender.Fatal.layout=org.apache.log4j.PatternLayout
log4j.appender.Fatal.Threshold = FATAL
log4j.appender.Fatal.File.DatePattern='.'yyyy-MM-dd'.log'



配置简要说明:

log4j.appender.test.File=./xc_app_log_error.log    "表示输出文件路径"
log4j.appender.RollingFile.File.DatePattern='.'yyyy-MM-dd'.log'   
表示每天生成一个日志文件,当天的日志文件会保存在xc_app_log_error.log文件中
到了第二天,会将昨天的日志文件xc_app_log_error.log保存为xc_app_log_error.'yyyy-MM-dd'.log',并将第二天的文件保存在新的
xc_app_log_error.log文件中,以此类推每过一天就追加一天的日志文件

log4j.appender.RollingFile.Threshold =日志级别   分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG


static Level DEBUG
DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的。

static Level INFO
INFO level表明 消息在粗粒度级别上突出强调应用程序的运行过程。

static Level WARN
WARN level表明会出现潜在错误的情形。

static Level ERROR
ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行。

static Level FATAL
FATAL level指出每个严重的错误事件将会导致应用程序的退出。

另外,还有两个可用的特别的日志记录级别: (以下描述来自log4j API http://jakarta.apache.org/log4j/docs/api/index.html):
static Level ALL
ALL Level是最低等级的,用于打开所有日志记录。

static Level OFF
OFF Level是最高等级的,用于关闭所有日志记录。








 
 


   


可以自由收藏管理个人常用网址的导航网      666导航网   
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是使用Log4j打印日志的步骤: 1. 在pom.xml文件中添加log4j的依赖,如下: ```xml <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> ``` 2. 在src/main/resources目录下创建log4j.properties文件,配置log4j的相关参数,如下: ```properties # Global logging configuration log4j.rootLogger=INFO, stdout # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] %-5p %c %x - %m%n # Log file log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=/var/log/myapp.log log4j.appender.file.MaxFileSize=10MB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] %-5p %c %x - %m%n ``` 上述配置中,rootLogger设置为INFO级别,输出到stdout和log文件中;stdout输出到console,log文件输出到/var/log/myapp.log文件中。 3. 在需要打印日志的类中,使用log4j进行日志打印,如下: ```java import org.apache.log4j.Logger; public class MyService { private static final Logger logger = Logger.getLogger(MyService.class); public void doSomething() { logger.info("something happened"); logger.error("something went wrong"); } } ``` 在上述代码中,使用Logger.getLogger()方法获取Logger对象,然后使用info()和error()方法打印日志。 这就是使用Log4j打印日志的基本步骤,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值