`
tanglingshuai
  • 浏览: 36201 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

log4j分级输出(嵌套代码中)

阅读更多

 

log4j在java开发中常用的日志工具包,对程序日常运行时信息的信息进行记录,方便程序调试、跟踪、维护等,下面我将和大家分享我如何将程序中各种类型的运行信息分类输出到不同日志的方法。

 

说实例之前先看看简单了解下log4j配置文件中常用参数

 

(1). 输出方式appender一般有5种:

      org.apache.log4j.RollingFileAppender(滚动文件,自动记录最新日志)
      org.apache.log4j.ConsoleAppender (控制台)  
      org.apache.log4j.FileAppender (文件)
      org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
      org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)

 

(2). 日记记录的优先级priority,优先级由高到低分为 
      OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG ,ALL。
      Log4j建议只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG这五个级别。

 

(3). 格式说明layout中的参数都以%开始,后面不同的参数代表不同的格式化信息(参数按字母表顺序列出):
      %c        输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的维(如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName)
      %d       输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}
      %l        输出日志事件发生位置,包括类目名、发生线程,在代码中的行数
      %n       换行符
      %m      输出代码指定信息,如info(“message”),输出message
      %p       输出优先级,即 FATAL ,ERROR 等
      %r        输出从启动到显示该log信息所耗费的毫秒数
      %t        输出产生该日志事件的线程名

 

 

log4j将日志信息分类输出以不同日志文件实例:

1、引入log4j

 

2、log4j.properties配置文件内容(配置文件放在src目录下):

 

#Debug

log4j.logger.debug=debug,debugAppender

#输出到控制台

log4j.appender.debugAppender=org.apache.log4j.RollingFileAppender

log4j.appender.debugAppender.File=D:/logs/debug.log

log4j.appender.debugAppender.MaxFileSize=10240KB

log4j.appender.debugAppender.MaxBackupIndex=3

#设置输出样式

log4j.appender.debugAppender.layout=org.apache.log4j.PatternLayout

#自定义样式

log4j.appender.debugAppender.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss}][%C-%M] %m%n

#限制只在当前appender输出(默认会在当前和所有的父appender输出)

log4j.additivity.debugAppender = false

 

#Info

log4j.logger.info=debug,infoAppender

#输出到控制台

log4j.appender.infoAppender=org.apache.log4j.RollingFileAppender

log4j.appender.infoAppender.File=D:/logs/info.log

log4j.appender.infoAppender.MaxFileSize=10240KB

#最多保存几个备份文件

log4j.appender.infoAppender.MaxBackupIndex=3

#设置输出样式

log4j.appender.infoAppender.layout=org.apache.log4j.PatternLayout

#自定义样式

log4j.appender.infoAppender.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss}][%C-%M] %m%n

#限制只在当前appender输出(默认会在当前和所有的父appender输出)

log4j.additivity.infoAppender = false

 

#Error

log4j.logger.error=debug,errorAppender

#输出到控制台

log4j.appender.errorAppender=org.apache.log4j.RollingFileAppender

log4j.appender.errorAppender.File=D:/logs/error.log

log4j.appender.errorAppender.MaxFileSize=10240KB

log4j.appender.errorAppender.MaxBackupIndex=3

#设置输出样式

log4j.appender.errorAppender.layout=org.apache.log4j.PatternLayout

#自定义样式

log4j.appender.errorAppender.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss}][%C-%M] %m%n

#限制只在当前appender输出(默认会在当前和所有的父appender输出)

log4j.additivity.errorAppender = false

 

3.写一个工具类LogUtil

public class LogUtil {

 

private Logger loggerDebug = null;

private Logger loggerError = null;

private Logger loggerInfo = null;

 

private LogUtil() {

 

}

 

public static LogUtil getLogUtil(Object message) {

return new LogUtil();

}

 

public void debug(Object message) {

if (loggerDebug == null) {

loggerDebug = Logger.getLogger("debug");

}

loggerDebug.debug(message);

}

 

public void error(Object message) {

if (loggerError == null) {

loggerError = Logger.getLogger("error");

}

loggerError.error(message);

}

 

public void info(Object message) {

if (loggerInfo == null) {

loggerInfo = Logger.getLogger("info");

}

loggerInfo.info(message);

}

 

}

 

4.测试输出

public class Test {

 

public static void main(String[] args) {

LogUtil myLog = LogUtil.getLogUtil(Test.class);

myLog.debug("调试信息咆哮体...");

myLog.info("日志信息有木有...");

myLog.error("错误信息你伤不起...");

}

 

}

 

此方法可以实现日志的分级输出,但是会嵌套在代码里,或许可以用拦截器来记录日志...

 

 

 

分享到:
评论

相关推荐

    log4j+slf4j实现 log4j测试代码,log4j+slf4j实现 log4j测试代码

    log4j+slf4j实现 log4j测试代码,log4j+slf4j实现 log4j测试代码,

    logging-log4j2-log4j-2.15.0-rc2.zip maven 资源库

    针对Log4j 2 远程代码执行漏洞,需要用到的升级资源包,适用于maven资源库,包括log4j,log4j-core,log4j-api,log4j-1.2-api,log4j-jpa等全套2.15.0 maven资源库jar包。如果是maven本地仓库使用,需要将zip包解压...

    SpringBoot框架配置log4j和log4j2的配置代码

    SpringBoot框架配置log4j和log4j2的配置代码,项目中用到的配置文件,可下载使用

    log4j 源代码 log4j 源代码

    log4j 源代码log4j 源代码log4j 源代码log4j 源代码log4j 源代码log4j 源代码log4j 源代码log4j 源代码

    Apache Log4j 2 源代码( apache-log4j-2.17.1-src.tar.gz)

    Apache Log4j 2 源代码( apache-log4j-2.17.1-src.tar.gz) 是对 Log4j 的升级,它比其前身 Log4j 1.x 提供了重大改进,并提供了 Logback 中可用的许多改进,同时修复了 Logback 架构中的一些固有问题。修复了安全...

    log4j配置 输出日志 案例

    log4j 配置 输出日志到控制台 到文件 代码及案例方便学习

    log4j自定义日志文件名及日志输出格式

    根据项目需要,要求日志文件名及输出的日志内容头为特殊的格式,因此重写了log4j的一些方法,如要求的格式和项目不同,可根据示例参考进行再次的修改

    kettle使用log4j管理输出日志

    参照了几个网上大神配置,部分教程的描述有误,最终调试完成,可以实现kettle日志输出,测试版本...需要替换的文件为,Kettle的程序目录下data-integration-6.0\plugins\kettle5-log4j-plugin中有一个log4j.xml文件。

    Apache Log4j2 远程代码执行漏洞检测工具

    Apache Log4j2 远程代码执行漏洞检测工具,包含windows版和linux版。图形化 Apache Log4j2检测工具

    log4j.jar各个版本

    apache-log4j-1.2.15.jar, apache-log4j-extras-1.0.jar, apache-log4j-extras-1.1.jar, apache-log4j.jar, log4j-1.2-api-2.0.2-javadoc.jar, log4j-1.2-api-2.0.2-sources.jar, log4j-1.2-api-2.0.2.jar, log4j-...

    若依框架使用的log4j2.16.0,修复log4j漏洞log4j2下载最新log4j2.16.0下载

    若依框架使用的log4j2.16.0,修复log4j漏洞log4j2下载最新log4j2.16.0下载

    JavaEE源代码 log4j-1.2.14

    JavaEE源代码 log4j-1.2.14JavaEE源代码 log4j-1.2.14JavaEE源代码 log4j-1.2.14JavaEE源代码 log4j-1.2.14JavaEE源代码 log4j-1.2.14JavaEE源代码 log4j-1.2.14JavaEE源代码 log4j-1.2.14JavaEE源代码 log4j-1.2.14...

    JavaEE源代码 log4j-1.2.11

    JavaEE源代码 log4j-1.2.11JavaEE源代码 log4j-1.2.11JavaEE源代码 log4j-1.2.11JavaEE源代码 log4j-1.2.11JavaEE源代码 log4j-1.2.11JavaEE源代码 log4j-1.2.11JavaEE源代码 log4j-1.2.11JavaEE源代码 log4j-1.2.11...

    Log4J日志文件输出Demo

    Log4J 日志文件输出Demo

    Apache Log4j 2 源代码( apache-log4j-2.17.1-src.zip)

    Apache Log4j 2 源代码( apache-log4j-2.17.1-src.zip) 是对 Log4j 的升级,它比其前身 Log4j 1.x 提供了重大改进,并提供了 Logback 中可用的许多改进,同时修复了 Logback 架构中的一些固有问题。修复了安全漏洞...

    log4j-1.2.9

    设置log4j的根目录,值为 日志等级(DEBUG,INFO,WARN,ERROR,FATAL) , 输出目标名称 log4j.rootLogger=DEBUG,A1 设置输出方式,常用的有: ConsoleAppender 在控制器中输出信息 RollingFileApperder 在文件中输出...

    log4j乱码问题解决办法

    在log4j.properties配置文件中可以指定字符编码: 下面这行配置指定了两个appender: log4j.rootCategory=INFO,appender1的名字,appender2的名字 下面这两行配置将上一行的两个appender的字符编码配置为GBK:

    Log4j将System.out搞到log4j中输出四

    NULL 博文链接:https://wwwiteye.iteye.com/blog/1985170

    log4j-core-2.15.0.jar log4j-2.15.0-rc2

    Apache log4j2零日漏洞,根据 log4j-2.15.0-rc2 版本编译生成log4j-api-2.15.0.jar 1.解压你的jar jar xvf XXX.jar 2. 删除旧版本jar cd ./BOOT-INF/lib rm -rf log4j-api-*.jar 3. 上传新版本log4j-api-2.15.0....

    log4j-api-2.12.1-API文档-中文版.zip

    赠送源代码:log4j-api-2.12.1-sources.jar; 赠送Maven依赖信息文件:log4j-api-2.12.1.pom; 包含翻译后的API文档:log4j-api-2.12.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.logging.log4j:...

Global site tag (gtag.js) - Google Analytics