在此记录编写实验4时遇到的问题
1.log4j的下载
首先需要下载log4j的安装包(需要翻墙),如果无法翻墙,则可以从我的百度云链接下载:
链接:https://pan.baidu.com/s/1lk1t5DLLsN6SWcXfD7DyiA
提取码:aw7d
下载后安装依赖即可。
2.log4j的配置文件的编写
首先,添加log4j.properties文件在src文件夹下,在程序运行时可以自动搜索到该文件进行配置。

然后对其进行编写。具体内容如下:
### set log levels ###
log4j.rootLogger = CONS, ERROR, WARN, INFO
首先,log4j.rootLogger表示要注册的输出变量,变量名可以随意写
然后,需要配置每一个变量的详细内容,如下:
### Console ###
log4j.appender.CONS = org.apache.log4j.ConsoleAppender
log4j.appender.CONS.Append = true
log4j.appender.CONS.Threshold = INFO
log4j.appender.CONS.layout = org.apache.log4j.PatternLayout
log4j.appender.CONS.layout.ConversionPattern = [%-d{yyyy-MM-dd HH:mm:ss}] - [%C] - [%p] - [%m]%n
以我对Console的解析为例。
第一行表示输出位置,具体可分为如下几类
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
第二行表示,如果输出文件,那么文件类型是覆盖还是接在文件末尾继续写。true表示继续写,false表示覆盖原文件,即每次重新打开程序输出日志时,之前的日志记录都会被覆盖。
第三行Threshold表示输出的信息的级别。Loggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL,分别用来指定这条日志信息的重要程度,明白这一点很重要,Log4j有一个规则:只输出级别不低于设定级别的日志信息,例如上面设置Loggers级别为INFO,则INFO、WARN、ERROR和FATAL级别的日志信息都会输出,而级别比INFO低的DEBUG则不会输出。
第四行用于指定输出格式,可选如下
(1)org.apache.log4j.HTMLLayout(以HTML表格形式布局)
(2)org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
(3)org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
(4)org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
第五行用于对输出格式化,格式化符号如下
%p:输出日志信息的优先级,即DEBUG,INFO,WARN,ERROR,FATAL。
%d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,如:%d{yyyy/MM/dd HH:mm:ss,SSS}。
%r:输出自应用程序启动到输出该log信息耗费的毫秒数。
%t:输出产生该日志事件的线程名。
%l:输出日志事件的发生位置,相当于%c.%M(%F:%L)的组合,包括类全名、方法、文件名以及在代码中的行数。例如:test.TestLog4j.main(TestLog4j.java:10)。
%c:输出日志信息所属的类目,通常就是所在类的全名。
%M:输出产生日志信息的方法名。
%F:输出日志消息产生时所在的文件名称。
%L::输出代码中的行号。
%m::输出代码中指定的具体日志信息。
%n:输出一个回车换行符,Windows平台为"rn",Unix平台为"n"。
%x:输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%:输出一个"%"字符。
另外,还可以在%与格式字符之间加上修饰符来控制其最小长度、最大长度、和文本的对齐方式。如:
- c:指定输出category的名称,最小的长度是20,如果category的名称长度小于20的话,默认的情况下右对齐。
- %-20c:"-"号表示左对齐。
- %.30c:指定输出category的名称,最大的长度是30,如果category的名称长度大于30的话,就会将左边多出的字符截掉,但小于30的话也不会补空格。
如果指定文件输出,需要指定文件生成的位置,我的输出位置如下:

相对路径的起始位置为工程文件,这样生成的logs文件夹与src文件夹为同一等级。

3.log4j的使用
使用非常方便,只需要新建logger类,然后使用如下语句
logger.debug("");
logger.warn("");
logger.info("");
参数填入想要输出的字符串即可。
其他更详细的内容,可以参考https://www.cnblogs.com/wangzhuxing/p/7753420.html
本文详细介绍了Log4j的下载、配置文件编写及使用方法。包括如何从百度云下载Log4j,配置log4j.properties文件实现不同级别日志输出,以及如何在程序中调用Log4j进行日志记录。
1300

被折叠的 条评论
为什么被折叠?



