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. qt连接数据库Sqlite

    #include <QCoreApplication> #include <QDebug> #include <QSqlDatabase> #include < ...

  2. 【新特性】JDK1.6

    一.Desktop类和SystemTray类 在JDK6中 ,AWT新增加了两个类:Desktop和SystemTray. 前者可以用来打开系统默认浏览器浏览指定的URL,打开系统默认邮件客户端给指定 ...

  3. 【Git】Git使用记录: remove *.lock eg: index.lock/head.lock

    问题 Another git process seems to be running in this repository, e.g. an editor opened by 'git commit' ...

  4. java三种注释以及参数涵义(转)

    原文地址:https://www.cnblogs.com/miys/p/4bf714ce33068dcf9ac6526309c9b5e6.html 单行注释:// 注释内容 多行注释:/*... 注释 ...

  5. 20165306 Exp5 MSF基础应用

    Exp5 MSF基础应用 一.实践概述 1. 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.实现: 1.1一个主动攻击实践 ms08-067+window ...

  6. krpano 常用标签

    <krpano></krpano>根标签 相当于 <body> <scene></scene>一个全景图场景 <image> 图 ...

  7. git pull 撤销误操作

    本来想把github上的release合并到本地的release分支上,由于没有查看当前分支,直接运用git pull origin v2.8.1,结果将release合并到了v2.8.1分支中. 解 ...

  8. vue中使用动画vue-particles

    1.下载依赖 npm install vue-particles --save-dev 2.main.js引入 import Vue from 'vue' import VueParticles fr ...

  9. NetSec2019 20165327 Exp1 PC平台逆向破解

    NetSec2019 20165327 Exp1 PC平台逆向破解 一.实践目标 本次实践的对象是一个名为pwn1(实验中用的 是5327pwnx)的linux可执行文件. 该程序正常执行流程是:ma ...

  10. 如何增加亚马逊listing多个类目节点

    流量是电商销售的必要因素,可以说,任何成功的电商平台都离不开流量.亚马逊listing优化做得好,不仅能提高产品的曝光率,还能提升转换率,而好的类目可以吸引大的流量.帮你快速爬升. 首先我们来了解一下 ...