`
guohui_fz
  • 浏览: 54507 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

log4j 笔记

阅读更多

Log4J 基本使用方法

先看一个log4j.properies配置文件:
#定义输出级别和输出平台
log4j.rootLogger=INFO,stdout,fileout
#设定stdout输出平台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss}][%l]:%m%n
#每天一个日志文件
log4j.appender.fileout=org.apache.log4j.DailyRollingFileAppender
log4j.appender.fileout.File=test.log
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss}][%l]:%m%n
#对不同的package定义不同的输出级别
log4j.logger.com.daniel.test=DEBUG

该配置文件的一个输出结果如下:
[[INFO ][2007-04-11 23:21:19][com.daniel.test.AspectJTest.showMessage(AspectJTest.java:17)]:AspectJTest$showMessage@Before:BigNumTest.statisticPrime
[INFO ][2007-04-11 23:21:20][com.daniel.test.BigNumTest.main(BigNumTest.java:25)]:从[1]到[225000]一共有[20020]个素数.
[INFO ][2007-04-11 23:21:20][com.daniel.test.BigNumTest.main(BigNumTest.java:27)]:一共用了[391]毫秒!

另外一个输出在文件test.log

分析:log4j.properies定义一般分3部分:
log4j.rootLogger(必须)、log4j.appender(必须)、log4j.logger(不必须)

1、log4j.rootLogger

这个配置是必须的,它的定义格式:

log4j.rootLogger = level  , appenderName, appenderName, …

lelve是定义的输出级别,低于该级别的将不会输出,主要级别有OFF、ALL、FATAL、ERROR、WARN、INFO、DEBUG或自 定义级别,其中OFF设定的话将不输出任何信息,ALL设定的话将输出所有信息;另外5个的级别FATAL>ERROR>WARN> INFO>DEBUG,如果你的lenel设定为INFO,那么不能输出DEBUG信息;

appenderName是指定日志信息输出到哪个地方,控制台,文件等等,可同时指定多个输出目的地。

2、log4j.appender

这个也是必须配置的,它是负责控制日志记录操作的输出。它的定义格式如下:

log4j.appender.appenderName=someAppender(选择一种输出平台)
[log4j.appender.appenderName.File=文件名](文件输出定义路径)
log4j.appender.appenderName.layout=输出布局
log4j.appender.appenderName.layout.ConversionPattern=输出格式

log4j.appender.appenderName指定输出appender,Log4J提供了一下几种appender:

a),org.apache.log4j.ConsoleAppender(控制台)
b),org.apache.log4j.FileAppender(文件)
c),org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
d),org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件,可通过 log4j.appender.R.MaxFileSize=100KB设置文件大小,还可通过 log4j.appender.R.MaxBackupIndex=1设置为保存一个备份文件)。
e),org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

log4j.appender.appenderName.layout指定日志信息的格式(布局)Layout,它负责格式化Appender的输出。Log4j提供的layout有以下几种:

org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)。

log4j.appender.appenderName.layout.ConversionPattern格式化日志信息,Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:

%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

3,log4j.logger

这个不是必需的,如果不配置这个,则采用log4j.rootLogger的level级别。它主要是具体到package、Class级别的info,它的定义格式如下:

log4j.logger.packageName[.ClassName]=level[,appender]

它也可以输出到指定的appender,也可以不指定输出到默认appender。

4,log4j的使用

a)、从www.apache.org下载commongs-logging包;

b)、在你的class里面定义protected final Log logger = LogFactory.getLog(this.getClass());
c)、在需要日志输出的地方logger.info(...),logger.error(...),logger.debug (...),....注意,在使用时前最好做个判断if (logger.isDebugEnabled()){logger.debug("...");}其他类似。

以上是使用Log4J时的笔记,都是一些基本用法,有什么不正确或者不全的地方请提出来共同学习~

分享到:
评论

相关推荐

    Gromacs中文手册5.0.2.pdf

    Gromacs中文手册5.0.2

    tensorflow_transform-0.1.0-py2-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    tensorflow_recommenders-0.3.1-py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    python冒泡排序(Bubble Sort).docx

    python冒泡排序(Bubble Sort) 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 以下是一个用Python实现的冒泡排序的例子: ```python def bubble_sort(lst): n = len(lst) for i in range(n): # 创建一个标记,用于优化 swapped = False # 遍历所有未排序的元素 for j in range(0, n-i-1): # 交换相邻元素,如果它们的顺序错误 if lst[j] > lst[j+1] : lst[j], lst[j+1] = lst[j+1], lst[j] swapped = True # 如果在内循环中没有交换

    A1_SSE_123090177.py

    A1_SSE_123090177.py

    asp代码ASP基于WEB的商场管理系统的设计与实现(源代码+论文)

    asp代码ASP基于WEB的商场管理系统的设计与实现(源代码+论文)本资源系百度网盘分享地址

    tensorflow_onmttok_ops-0.2.0-cp35-cp35m-manylinux2014_x86_64.whl

    算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    三菱PLC例程源码S2401佑倡油压机

    三菱PLC例程源码S2401佑倡油压机本资源系百度网盘分享地址

    Modown v4.3资源下载WordPress主题

    Modown是模板兔基于Erphpdown wordpress下载插件开发的一款全新的针对收费付费下载资源的WordPress主题,一款为erphpdown而生的wp主题。此主题不包含erphpdown插件(免激活版)价值199元。注意在其他地方购买可能不包含插件,还要自己去购买插件,而且不一定是免激活版。 自适应响应式设计,兼容主流浏览器 网格样式与瀑布流样式任意切换 自带与主题UI完美兼容搭配的erphpdown前端用户中心页面(此功能若单独找我们定制也需要几百) 首页banner处可以换成幻灯片、增加搜索框、按钮等 分类多重筛选(每个分类的筛选标签可自定义) 自定义文章类型(博客或教程等等),文章列表显示 一键社交账号登录,自定义的登录注册找回密码页面模板(含验证码) 多个小工具以及页面模板(前端投稿页面) CMS式首页模板(显示多个分类板块,可子分类筛选) Ajax无刷新评论 集成ckplayer视频播放器(使用短代码 [ckplayer]视频地址[/ckplayer]) 外链特色图片,列表页文章图片可自定义高度 文章单栏与双栏切换,可点赞收藏 特点说多了等于扯淡,惊喜等你来

    python冒泡排序.md

    python冒泡排序 冒泡排序的时间复杂度为O(n^2),其中n是列表的长度。这是因为对于每个元素,我们可能需要与其后面的所有元素进行比较和交换。尽管冒泡排序在某些情况下可能不是最优的选择,特别是当处理大型数据集时,但它易于理解和实现,对于初学者来说是一个很好的起点。 值得注意的是,冒泡排序在最好的情况下(即列表已经排序)的时间复杂度为O(n),但这种情况很少发生。通常,我们讨论冒泡排序的时间复杂度时,我们指的是其平均和最坏情况,即O(n^2)。 冒泡排序的一个优化是,如果在一次遍历中没有发生任何交换,那么列表已经排序完成,我们可以提前终止算法。这可以避免不必要的比较和交换操作。下面是优化后的冒泡排序代码:

    理工科研究生简历模板,美观且信息量足

    春招秋招应届生必备,美观大方排版好看简历模板,需要word版本或者需要简历指导可以私。

    基于深度学习的USPS手写体识别模型.zip

    人工智能毕业设计&课程设计

    基于PaddleOCR重构,并且脱离PaddlePaddle深度学习训练框架的OCR.zip

    人工智能毕业设计&课程设计

    asp代码ASP基于WEB网上聊天室设计(源代码+论文)

    asp代码ASP基于WEB网上聊天室设计(源代码+论文)本资源系百度网盘分享地址

    三菱PLC例程源码层绕机

    三菱PLC例程源码层绕机本资源系百度网盘分享地址

    三菱PLC例程源码YX细伸拉丝机三菱FXPLC程序(有注解)张力控制与传统的指拔开关不一样

    三菱PLC例程源码YX细伸拉丝机三菱FX PLC程序(有注解)张力控制与传统的指拔开关不一样本资源系百度网盘分享地址

    三菱PLC例程源码pp復卷機三菱伺服編程

    三菱PLC例程源码pp復卷機三菱伺服編程本资源系百度网盘分享地址

    基于ssm+web的微博网站.zip

    基于ssm+web的微博网站.zip

    基于深度学习的口罩佩戴检测,Keras-YOLOv3 实现。.zip

    人工智能毕业设计&课程设计

    tensorflow_privacy-0.2.2-py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

Global site tag (gtag.js) - Google Analytics