知识屋:更实用的电脑技术知识网站
所在位置:首页 > 科技  > 软件

[java]使用jog4j给java程序添加日志功能

发表时间:2022-03-25来源:网络

使用jog4j给java程序添加日志功能

1.前言2.log4j的下载与安装3.配置log4j4.在java代码中添加logger并初始化5.使用logger记录日志

1.前言

java本身自带有logging日志工具,虽然使用起来比较简单方便,但是如果要调用一些相对来说比较复杂的功能就会比较麻烦。本文对log4j这一外部日志工具进行一些简要的配置/使用方法说明,同时针对自己的lab4给出相关的示例

2.log4j的下载与安装

log4j作为外部项目,自然要下载。
目前登录官网可以下载到最新版本的log4j(2.x)

如果登录官网比较慢也可以用其他国内软件站下载
由于2.1与1.2版本有一些不同,最后选择了1.2版本
下载后将其放入项目的lib文件夹内并进行导入
以eclipse为例
右键项目→构建路径→配置构建路径→添加外部JAR


选择log4j.jar并打开,最后点击应用即可导入

3.配置log4j

如果像正常使用log4j来记录日志,我们还需要新添加一个log4j的配置文件
1.在项目的src目录下新建一个文件,将其重命名为log4j.properties
2.遵守其配置规则写log4j的配置文件,这里先给出一个示例

log4j.rootLogger = debug,D,E log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = logs/log.log log4j.appender.D.Append = true log4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %p ] %m%n log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File =logs/error.log log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %p ] %m%n

下面是对配置规则的讲解
①log4j.rootLogger = level,Name1,Name2……
在日志中,信息具有不同的优先级,从高到低分别为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL七个级别,常用的是ERROR到DEBUG的四个级别
对于level变量来说,我们的日志将会输出大于等于level级别的信息,因此我们在这里将level设为debug就可以涵盖绝大多数程序中出现的信息。
Name1,Name2则是日志信息输出的位置,我们可以选择输出到控制台或是输出到文件中
②配置主体部分:
第一行:“log4j.appender.Name = xxx”
Name即为root中所设定的输出位置,对于log4j来说有xxx如下可输出方式
ConsoleAppender(控制台), FileAppender(文件),DailyRollingFileAppender(每日产生一个新的日志文件,将会覆盖掉旧文件),RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),WriterAppender(将日志信息以流格式发送到任意指定的地方)
一般使用前三种情况比较多

配置文件目的地:
“log4j.appender.D.File = logs/log.log”
“log4j.appender.D.Append = true”
“log4j.appender.D.Threshold = DEBUG”
三行为File文件下使用的配置
第一行为配置日志文件的位置,第二行为是否将消息附加到文件中,默认为true,不作改动,第三行为最低的输出等级,这里设置为debug即是输出等级最低为debug
例:如果设置为info,那么我们就只能看到info以上的信息,debug等级就不会输出到文件中

配置控制台目的地:
对于控制台来说很简单,只需要一行
log4j.appender.xxx.Target = System.out
这样的话就会直接输出到控制台

③配置日志格式(layout)
layout一共有如下几种
org.apache.log4j.HTMLLayout(HTML表格)
org.apache.log4j.PatternLayout(指定格式)
org.apache.log4j.SimpleLayout(包含level与信息的字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、类别等信息)
选择Layout后自定义Pattern格式
log4j.appender.D.layout.ConversionPattern
%-d{yyyy-MM-dd HH:mm:ss}代表输出与此格式相同的时间
[ %p ] 代表输出的level
%m%n代表输出代码中的消息并进行换行
其他还有多种格式化输出日志信息代码
如%r代表输出程序到此位置时的ms数
%c代表输出所在类的全名等等

4.在java代码中添加logger并初始化

1.添加如下代码

static Logger logger = Logger.getLogger(String name);

此时我们得到了一个名为logger的日志记录器
String name一般取本类的名字 可以直接使用
xxx.class.getName()来获取
2.光得到了记录器还不够,此时我们需要对其初始化
可以选择创建initLogger方法

public static void initLogger() { FileInputStream fileInputStream = null; try { Properties properties = new Properties(); fileInputStream = new FileInputStream("src/log4j.properties"); properties.load(fileInputStream); PropertyConfigurator.configure(properties); } catch (Exception e) { e.printStackTrace(); } finally { if (fileInputStream != null) { try { fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } }

并调用init方法

initLog.initLogger();

此时完成了对logger的初始化

5.使用logger记录日志

logger.level(“message”);
level即为上文中所提到的日志优先级,比如这里改为info,那么程序最后就会向日志文件输出一条INFO级别的message信息,改为error则是输出error级别信息

最终效果示例:

(图中修改了部分Pattern与文件名,仅作为参考)

收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜