简要log4j配置
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 关于全局日志的配置
关于日志的输出级别
log4j日志级别分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。通过在配置文件中配置,可以控制到应用程序中相应级别的日志信息的开关。比如在配置文件中定义了log4j.rootLogger为INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来,也是说大于等于的级别的日志才输出。全局日志配置 log4j.rootLogger
这个是用来定义日志全局的输出级别以及输出的目的地,这里我定义的是log4j.rootLogger=info, console, infofile, errorfile,这里定义了全局输出的日志为INFO级别,也就是说能输出的日志级别一定不低于INFO级别,即DEBUG级别的日志将不会输出,输出到哪呢?输出到紧接其后定义的目的地 console, infofile, errorfile,这个3个目的地可以随意命名,在每个目的地中可以具体细化日志的配置,即他们可以再次对日志的级别进行过滤,对日志输出格式进行细化,对日志输出端类型进行指定。指定日志输出目的地中输出端 log4j.appender.目的地名称
就是配置输出到这个目的地的日志,他是在控制台中输出,还是以文件的形式输出,如果以文件的形式输出,那么其文件产生时机是什么时候org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)指定日志输出目的地中日志输出级别 log4j.appender.interceptor.Threshold
通过该属性可以指定目的地中日志输出的级别,相当于对全局配置的日志级别再次做一次过滤
3.2 关于单独模块日志配置
log4j.logger.login.模块名
这一句配置相当于新添了一个日志模块,他的值与rootLogger代表意义相同,即指定相对该模块下全局日志级别及对应的输出目的地,其余对应目的地的配置和全局日志相同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配置的更多相关文章
- 使用log4j配置不同文件输出不同内容
敲代码中很不注意写日志,虽然明白很重要.今天碰到记录日志,需要根据内容分别输出到不同的文件. 参考几篇文章: 感觉最详细:http://blog.csdn.net/azheng270/article/ ...
- log4j 配置
给java项目添加log4j日志: 1.下载log4j jar包,放入lib目录, 导入项目中 2.创建log4j.properties 文件 目录 Src 3.在需要使用输出的类中使用 priva ...
- log4j配置日志文件log4j.appender.R.File相对路径方法
方法一. 解决的办法自然是用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如:log4j.appender.logfile.File=${WORKDIR}/logs ...
- paip.Log4j配置不起作用的解决
paip.Log4j配置不起作用的解决 1.jar包里的log4j配置 看累挂jar,真的有个" webservices-rt.jar\com\sun\org\apache\xml\inte ...
- Flume学习 & Kafka & Storm 等 & Log4J 配置
正在学习这篇文章: http://blog.csdn.net/ymh198816/article/details/51998085 和工作中接触的电商.订单.分析,可以结合起来. 开宗明义,这幅图片: ...
- Log4j配置全说明
转载:http://zhangjunhd.blog.51cto.com/113473/21014/ 1.Log4j简介 Log4j是Apache的一个开源项目,它允许开发者以任意间隔输出日志信息.Lo ...
- log4j日志输出到日志文件中和控制台中 +log4j配置详解
1.引入log4j的jar包 https://mvnrepository.com/,可以找到log4j的jar和依赖. 2.创建log4j.properties,并配置log4j #设置日志的级别 , ...
- 项目重构之数据源配置与优化:log4j 配置数据库连接池Druid,并实现日志存储到数据库
作者:泥沙砖瓦浆木匠网站:http://blog.csdn.net/jeffli1993个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 交流QQ群:[编程之美 365234583] ...
- log4j 配置,tomcat 启动或有后台操作时,控制台会显示很多 DEBUG 信息
log4j 配置,tomcat 启动或有后台操作时,控制台会显示很多 DEBUG 信息 日志信息可以以文件形式显示,也可以在控制台输出,在 log4j.properties 文件设置. 控制台有很多 ...
随机推荐
- Axios Token验证拦截器
import axios from 'axios'; // req拦截 axios.interceptors.request.use( //设置头部的token config.headers['tok ...
- Django中的FBV与CBV
一. FBV FBV(function based views) 基于函数的视图, 即一个url对应一个视图函数. 1.1 FBV代码示例 urls.py from django.contrib im ...
- Uva12174 Shuffle(滑动窗口)
$play[i]$表示以$i$这个点结束的连续$s$个播放记录是否是无重复的,这样最后只需要枚举可能的播放时间,然后检查对应的播放区间是否是单独的就可以了.特殊情况是,出现的所有播放记录无重复,且长度 ...
- 蚂蚁金服mPaaS 3.0发布 助力客户智能化构建超级App生态
1月4日,蚂蚁金融科技宣布蚂蚁金服移动开发平台mPaaS(mobile Platform-as-a-Service)升级到3.0版本,“新版本以智能技术助力客户构建自己的超级 App,企业可以拥有等同 ...
- 根据不同浏览器判断OCX插件是否安装
最近项目进入到了验收阶段,需要兼容不同的浏览器,海康的Demo写了一个判断插件是否成功安装的函数,但是经过测试,只在IE浏览器下有效果,在其他的浏览器下面会出现Bug,现在需要写一个通用的方法,在不同 ...
- SAM宏观生态学空间分析帮助文档
宏观生态学分析软件帮助文档: 引言: 该软件是由布鲁塞尔..大学开发,目的是提供一个综合的空间分析计算平台,主要针对的是宏观生态学数据.该软件可以从网站...上自由获取,该软件的主要特征以及发表在20 ...
- (转)如何在maven的pom.xml中添加本地jar包
转载自: https://www.cnblogs.com/lixuwu/p/5855031.html 1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下 ...
- PyQt5——高级控件
PyQt5高级控件使用方法详见:https://blog.csdn.net/jia666666/article/list/4?t=1& PyQt5高级控件汇总: 1.QTableView 2. ...
- MATLAB 实时脚本(live-script)使用
在matlab2016a及以上的版本不建议安装notebook来编写实施脚本,以为之后的matlab里面会有live-script,他可以创建实施脚本,使脚本与方便操作.那么这个live script ...
- 有趣的if循环
今天,在论坛看到一个有趣的if 循环,我感觉有不错,就分享出来 问题,列表只有6个数,为什么打印8个数?原理? q = ['a', 'b', 'c', 'd', 'e', 'f'] for i in ...