1. 配置效果

下面的log4j日志配置最终能达到的效果是对于全局日志可以根据级别输入到对应级别的日志文件中,注意低级别的日志文件会同时包含高级别的日志信息,例如info级别的日志文件会包含info,warn,error信息,对于一些重要的模块,可以单独输出到独立的文件夹文件中,同时对单独模块也可以像全局日志那样根据日志级别输入到对应文件中 也可以配置该模块日志信息是否同时输入到全局日志中

2. 样板Log4j配置示例

这段配置的效果是配置3个全局的输出目的地,分别输出到控制台,和两个文件中,控制台的输出级别是info,两个文件的输出级别分别是info和error,配置一个login(登录)模块的日志输出到文件中,并且配置该模块日志信息不输出到全局日志中,在该模块中日志同样按照级别输出到不同文件

log4j.rootLogger=DEBUG,console, infofile, errorfile

#日志文件输出目录
basedir=${catalina.home}/logs/basemvc
#登录模块日志输出目录
logindir=${basedir}/login #控制台日志-输出info以上
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=info
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-ddHH\:mm\:ss}[%-5p]%m%n%n #文件中info级别以上日志
log4j.appender.infofile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.infofile.Append=true
log4j.appender.infofile.DatePattern='.'yyyy-MM-dd
log4j.appender.infofile.File=${basedir}/info.log
log4j.appender.infofile.Threshold=info
log4j.appender.infofile.layout=org.apache.log4j.PatternLayout
log4j.appender.infofile.layout.ConversionPattern=%d{yyyy-MM-ddHH\:mm\:ss}[%-5p]%m%n%n #文件中error级别以上日志
log4j.appender.errorfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorfile.Append=true
log4j.appender.errorfile.DatePattern='.'yyyy-MM-dd
log4j.appender.errorfile.File=${basedir}/error.log
log4j.appender.errorfile.Threshold=ERROR
log4j.appender.errorfile.layout=org.apache.log4j.PatternLayout
log4j.appender.errorfile.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [%-5p] %m%n%n #--------------------以下login模块相关日志--------------------
#login模块输出
#INFO及以上级别的log进行输出
log4j.logger.login=INFO,logininfofile,loginerrorfile #login模块文件中存储info级别以上日志
log4j.appender.logininfofile.Threshold=INFO
#以文件类型输出
log4j.appender.logininfofile=org.apache.log4j.DailyRollingFileAppender
#输出路径
log4j.appender.logininfofile.File=${logindir}/info_login.log
#配置文件输出的文件命名,这种格式文件会在凌晨生成一个文件,想在其他时间生成新文件可以查看DatePattern的相关配置
log4j.appender.logininfofile.DatePattern='_'yyyy-MM-dd'.log'
#输出格式
log4j.appender.logininfofile.layout=org.apache.log4j.PatternLayout
log4j.appender.logininfofile.layout.ConversionPattern=%d %p [%c] - %m%n #login模块文件中存储error级别以上日志
log4j.appender.loginerrorfile.Threshold=ERROR
#以文件类型输出
log4j.appender.loginerrorfile=org.apache.log4j.DailyRollingFileAppender
#输出路径
log4j.appender.loginerrorfile.File=${logindir}/error_login.log
#配置文件输出的文件命名,这种格式文件会在凌晨生成一个文件,想在其他时间生成新文件可以查看DatePattern的相关配置
log4j.appender.loginerrorfile.DatePattern='_'yyyy-MM-dd'.log'
#输出格式
log4j.appender.loginerrorfile.layout=org.apache.log4j.PatternLayout
log4j.appender.loginerrorfile.layout.ConversionPattern=%d %p [%c] - %m%n #设置这个子Logger输出日志不在父级别logger里面输出
log4j.additivity.login=false #--------------------以上login模块相关日志--------------------

3. 配置简要解释

3.1 关于全局日志的配置

  1. 关于日志的输出级别

    log4j日志级别分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。通过在配置文件中配置,可以控制到应用程序中相应级别的日志信息的开关。比如在配置文件中定义了log4j.rootLogger为INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来,也是说大于等于的级别的日志才输出。

  2. 全局日志配置 log4j.rootLogger

    这个是用来定义日志全局的输出级别以及输出的目的地,这里我定义的是log4j.rootLogger=info, console, infofile, errorfile,这里定义了全局输出的日志为INFO级别,也就是说能输出的日志级别一定不低于INFO级别,即DEBUG级别的日志将不会输出,输出到哪呢?输出到紧接其后定义的目的地 console, infofile, errorfile,这个3个目的地可以随意命名,在每个目的地中可以具体细化日志的配置,即他们可以再次对日志的级别进行过滤,对日志输出格式进行细化,对日志输出端类型进行指定。

  3. 指定日志输出目的地中输出端 log4j.appender.目的地名称

    就是配置输出到这个目的地的日志,他是在控制台中输出,还是以文件的形式输出,如果以文件的形式输出,那么其文件产生时机是什么时候

    org.apache.log4j.ConsoleAppender(控制台)

    org.apache.log4j.FileAppender(文件)

    org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)

    org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)

    org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

  4. 指定日志输出目的地中日志输出级别 log4j.appender.interceptor.Threshold

    通过该属性可以指定目的地中日志输出的级别,相当于对全局配置的日志级别再次做一次过滤

3.2 关于单独模块日志配置

  1. log4j.logger.login.模块名

    这一句配置相当于新添了一个日志模块,他的值与rootLogger代表意义相同,即指定相对该模块下全局日志级别及对应的输出目的地,其余对应目的地的配置和全局日志相同

  2. log4j.additivity.模块名

    设置这个子Logger输出日志是否在父级别logger里面输出,true表示同时在父级的日志输出,这里的模块名可以换为模块下的目的地名称,效果是一样的

4. java中使用日志

对于在java中使用,单独日志模块要想独立输出获取日志对象时在方法参数中要传入模块名称,对于全局日志对象只需传入当前类的class对象即可,代码示例如下:

public class UserAction {
//登录模块使用的日志对象
private Logger loginLogger = Logger.getLogger("login");
//全局日志对象
private Logger logger = Logger.getLogger(UserAction.class); public void detail(){
logger.debug("user_product----"+"debug");
logger.info("user_product----"+"info");
logger.warn("user_product----"+"warn");
logger.error("user_product----"+"error");
} public void login(){
loginLogger.debug("user_product----"+"debug");
loginLogger.info("user_product----"+"info");
loginLogger.warn("user_product----"+"warn");
loginLogger.error("user_product----"+"error");
}

简要log4j配置的更多相关文章

  1. 使用log4j配置不同文件输出不同内容

    敲代码中很不注意写日志,虽然明白很重要.今天碰到记录日志,需要根据内容分别输出到不同的文件. 参考几篇文章: 感觉最详细:http://blog.csdn.net/azheng270/article/ ...

  2. log4j 配置

    给java项目添加log4j日志: 1.下载log4j jar包,放入lib目录, 导入项目中 2.创建log4j.properties 文件  目录 Src 3.在需要使用输出的类中使用 priva ...

  3. log4j配置日志文件log4j.appender.R.File相对路径方法

    方法一. 解决的办法自然是用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如:log4j.appender.logfile.File=${WORKDIR}/logs ...

  4. paip.Log4j配置不起作用的解决

    paip.Log4j配置不起作用的解决 1.jar包里的log4j配置 看累挂jar,真的有个" webservices-rt.jar\com\sun\org\apache\xml\inte ...

  5. Flume学习 & Kafka & Storm 等 & Log4J 配置

    正在学习这篇文章: http://blog.csdn.net/ymh198816/article/details/51998085 和工作中接触的电商.订单.分析,可以结合起来. 开宗明义,这幅图片: ...

  6. Log4j配置全说明

    转载:http://zhangjunhd.blog.51cto.com/113473/21014/ 1.Log4j简介 Log4j是Apache的一个开源项目,它允许开发者以任意间隔输出日志信息.Lo ...

  7. log4j日志输出到日志文件中和控制台中 +log4j配置详解

    1.引入log4j的jar包 https://mvnrepository.com/,可以找到log4j的jar和依赖. 2.创建log4j.properties,并配置log4j #设置日志的级别 , ...

  8. 项目重构之数据源配置与优化:log4j 配置数据库连接池Druid,并实现日志存储到数据库

    作者:泥沙砖瓦浆木匠网站:http://blog.csdn.net/jeffli1993个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 交流QQ群:[编程之美 365234583] ...

  9. log4j 配置,tomcat 启动或有后台操作时,控制台会显示很多 DEBUG 信息

    log4j 配置,tomcat 启动或有后台操作时,控制台会显示很多 DEBUG 信息 日志信息可以以文件形式显示,也可以在控制台输出,在 log4j.properties 文件设置. 控制台有很多 ...

随机推荐

  1. 单元测试系列之五:Mock工具之Mockito实战

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6780719.html 在实际项目中写单 ...

  2. 蒙德里安的梦想【状压DP】

    求把N*M的棋盘分割成若干个1*2的的长方形,有多少种方案. 例如当N=2,M=4时,共有5种方案.当N=2,M=3时,共有3种方案. 如下图所示: 输入格式 输入包含多组测试用例. 每组测试用例占一 ...

  3. java解压多层目录中多个压缩文件和处理压缩文件中有内层目录的情况

    代码: package com.xiaobai; import java.io.File; import java.io.FileOutputStream; import java.io.IOExce ...

  4. SQLAlchemy 增删改查 一对多 多对多

    1.创建数据表 # ORM中的数据表是什么呢? # Object Relation Mapping # Object - Table 通过 Object 去操纵数据表 # 从而引出了我们的第一步创建数 ...

  5. toFixed()精度丢失;复选框全选、取消

    一.精度丢失和重写toFixed()函数 1.重写toFixed() Number.prototype.toFixed = function(length){ var carry = 0; //存放进 ...

  6. php输出语句有什么不同

    print()函数: 输出一个或者多个字符串.同echo一样,实际上它并不是一个函数.print有返回值.而echo没有.当其执行失败时返回false,成功 则返回true,速度比echo稍慢.只能打 ...

  7. scrapy 中crawlspider 爬虫

    爬取目标网站: http://www.chinanews.com/rss/rss_2.html 获取url后进入另一个页面进行数据提取 检查网页: 爬虫该页数据的逻辑: Crawlspider爬虫类: ...

  8. selenium自动化定位方式

    自动化定位方式 1.String Xpath = String.format("//*[@id=\"saveFileKeyWordsBtnHand\"]/../../.. ...

  9. json处理+list.sort()排序

    #coding:utf-8 """ json是一种轻量级数据交换格式,可以对复杂数据进行表达和存储 规格: 1.数据保存在键值对里 2.键值对之间由逗号分隔 3.花括号用 ...

  10. servletsza

    servlet本身不能独立运行,需要在一个web应用中运行,而web应用是部署在tomcat上的 所以一个servlet开发需要以下几个步骤: ①创建web应用项目 ②编写servlet代码 ③部署到 ...