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. C# Winform 中DataGridView 实现单元格输入下拉框功能

    https://blog.csdn.net/ad13adsa/article/details/82108969 private void dataGridViewX1_EditingControlSh ...

  2. Qt对象树

    Qt提供了一种机制,能够自动.有效的组织和管理继承自QObject的Qt对象,这种机制就是对象树.子对象动态分配空间不需要释放.

  3. 小程序之 swiper高度根据图片高度变化

    今天做的是这个效果⬇️  swiper的高度根据图片的高度而改变 wxml:<swiper indicator-dots="{{indicatorDots}}" vertic ...

  4. Python开发 基础篇

    2019-02-01 产生验证码: 用户输入的值和显示的值相同时显示Correct,否则继续生成随机验证码等待用户输入 def check_code(): import random checkcod ...

  5. Spring MyBatis多数据源(同包)

    创建基本的包 entity service dao 为了区分多数据源 一个用的是Mysql 一个是Oracle 方便测试, 创建MyBatis dao 映射 xml 文件 创建db.propertie ...

  6. 使用js写简易的倒计时

    步骤 1.获取span标签2.获取现在的时间戳 3.获取未来的时间戳 4.将未来时间戳减去现在的时间戳等于相差的秒数 5.输出到页面 直接上代码 <span name="os" ...

  7. CMD命令:不是内部或者外部命令也不是可运行的程序或批处理文件

    [本文转自:https://blog.csdn.net/l_mloveforever/article/details/79513681] 前言:   相信有很多小伙伴都比较喜欢使用Command命令来 ...

  8. Web API学习笔记(Python实现)

    参考指南: Web API入门指南 http://www.cnblogs.com/guyun/p/4589115.html 用Python写一个简单的Web框架 http://www.cnblogs. ...

  9. Spring mvc集成log4j2

    前期环境 Spring mvc + Maven + Idea 一.下面开始配置log4j2,先简单演示其如何配置,再仔细了解log4j2用法. 1.1  配置pom.xml,引用log4j2相关包 & ...

  10. mac上运行window程序。

    wine https://wiki.winehq.org/Wine_User%27s_Guide#Quick_start #使用brew brew install Caskroom/cask/xqua ...