java桌面程序配置log4j_Windows Java桌面应用程序集成slf4j实现日志持久化

本文介绍了如何在Windows上的Java桌面程序中配置log4j,通过slf4j作为日志门面,详细阐述了配置文件的选择逻辑和代码实现步骤,包括设置JVM变量指定配置文件、使用log4j.xml进行日志记录,展示了不同级别的日志输出,并提及了log4j提供的不同Appender类型。
摘要由CSDN通过智能技术生成

Windows上一般的应用程序也可以通过日志系统打印日志到指定文件。通过这个例子想说明,问题处理的方法是多种多样的,一种组件的应用场合也是多样的,平时slf4j日志系统多用于Web程序,其实桌面程序等一样可以使用。在真实开发自己的一个Java桌面应用的时候,这还是必须的,否则运行异常日志无法收集。System.out.println毕竟只能用于Hello World这种小的Demo程序,日志系统是现代软件的标准组件。

本文使用的日志实现是log4j,为此需要引入3个jar,slf4j-api这个是日志门面,slf4j-log4j是沟通门面slf4j-api和log4j的桥梁,log4j中包含了具体的日志打印实现。这些jar包在maven公共仓库中都很容器找到,直接下来即可使用,或者直接创建maven工程引入这些jar包。

1 log4j日志系统对配置文件的选择

查看log4j-1.2.17.jar中的加载配置文件的源码LogManager.java、OptionConverter.java,可以看到如果log4j使用哪个配置文件配置日志系统由以下变量决定

public static final String DEFAULT_CONFIGURATION_FILE = “log4j.properties”;

static final String DEFAULT_XML_CONFIGURATION_FILE = “log4j.xml”;

public static final String DEFAULT_CONFIGURATION_KEY = “log4j.configuration”; 优先顺序依次是:

1)、使用环境变量log4j.configuration的值指定的配置文件,要求配置的文件是xml或者是properties文件

2)、没有log4j.configuration指定的配置文件则使用配置文件log4j.xml

3)、没有log4j.xml则使用配置文件log4j.properties

2 代码实现

step1:引入需要的jar包 在工程中引入jar包slf4j-api-1.7.7.jar、slf4j-log4j12-1.7.7.jar、log4j-1.2.17.jar 对应的maven配置如下:

org.slf4j

slf4j-api

1.7.7

org.slf4j

slf4j-log4j12

1.7.7

log4j

log4j

1.2.17

step2:代码实现 如果直接使用logback.xml或logback.properties,文件命名不允许变化,且文件的位置必须按规定防止,所以这里使用设置JVM变量的方式决定加载哪个配置文件。这样文件配置的灵活性好一点。

package com.desktopapp.testslf4j;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class TestDesktopAppSlf4j

{

static

{

//指定配置文件加载路径

System.setProperty("log4j.configuration", "file:./Prj/src/main/java/com/desktopapp/testslf4j/testlog4j.xml");

LOGGER = LoggerFactory.getLogger(TestDesktopAppSlf4j.class);

}

public static Logger LOGGER;

public static void main(String[] args)

{

System.out.println(System.getProperty("user.dir"));

LOGGER.trace("this is trace log from Windows Java Desktop Application");

LOGGER.debug("this is debug log from Windows Java Desktop Application");

LOGGER.info("this is info log from Windows Java Desktop Application");

LOGGER.warn("this is warn log from Windows Java Desktop Application");

LOGGER.error("this is error log from Windows Java Desktop Application");

}

}

testlog4j.xml内容如下:

最后在文件D:\logs\testlog4j.log中的执行一次以上程序打印效果如下:

[DEBUG] [2018-09-14 00:22:55 048] [this is debug log from Windows Java Desktop Application] [com.desktopapp.testslf4j.TestDesktopAppSlf4j] [com.desktopapp.testslf4j.TestDesktopAppSlf4j.main(TestDesktopAppSlf4j.java:21)]

[INFO] [2018-09-14 00:22:55 051] [this is info log from Windows Java Desktop Application] [com.desktopapp.testslf4j.TestDesktopAppSlf4j] [com.desktopapp.testslf4j.TestDesktopAppSlf4j.main(TestDesktopAppSlf4j.java:22)]

[WARN] [2018-09-14 00:22:55 051] [this is warn log from Windows Java Desktop Application] [com.desktopapp.testslf4j.TestDesktopAppSlf4j] [com.desktopapp.testslf4j.TestDesktopAppSlf4j.main(TestDesktopAppSlf4j.java:23)]

[ERROR] [2018-09-14 00:22:55 051] [this is error log from Windows Java Desktop Application] [com.desktopapp.testslf4j.TestDesktopAppSlf4j] [com.desktopapp.testslf4j.TestDesktopAppSlf4j.main(TestDesktopAppSlf4j.java:24)]

log4j提供了5种Appender,分别是

org.apache.log4j.RollingFileAppender

org.apache.log4j.ConsoleAppender

org.apache.log4j.FileAppender

org.apache.log4j.DailyRollingFileAppender

org.apache.log4j.WriterAppender

程序中xml配置只使用了org.apache.log4j.FileAppend,其他可以根据自己的需要配置,这里就不再展开讲了。 有了以上的程序,大家应该对商用的软件怎样采集日志不会再那么神秘了吧,必要的话,放弃System.out.println吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值