log4j的使用,即java该如何使用日志文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了log4j的使用,即java该如何使用日志文件相关的知识,希望对你有一定的参考价值。

java使用日志文件log4j的方法:

1、 新建一个Java工程,导入Log4j包,pom文件中对应的配置代码如下:

<!-- log4j support -->
<dependency>
   <groupId>log4j</groupId>
   <artifactId>log4j</artifactId>
   <version>1.2.17</version>
</dependency>

2、resources目录下创建log4j.properties文件

### 设置###
log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %dyyyy-MM-dd HH:mm:ss,SSS method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=/home/duqi/logs/debug.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = /home/duqi/logs/debug.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-dyyyy-MM-dd HH:mm:ss  [ %t:%r ] - [ %p ]  %m%n

### 输出ERROR 级别以上的日志到=/home/admin/logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =/home/admin/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 = %-dyyyy-MM-dd HH:mm:ss  [ %t:%r ] - [ %p ]  %m%n

3、输出日志的例子如下

package com.javadu.log;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Log4JTest
   private static final Logger logger = LoggerFactory.getLogger(Log4JTest.class);

   public static void main(String[] args)
       // 记录debug级别的信息
       logger.debug("This is debug message.");
       // 记录info级别的信息
       logger.info("This is info message.");
       // 记录error级别的信息
       logger.error("This is error message.");
   

4、输出结果
首先,控制台输入如下图所示:

然后,查看/Users/duqi/logs目录下的debug.log和error.log文件,内容分别如下,可以看出:

参考技术A 在classes的目录,建立 log4j.properties配置一下输出,,,,就可以在JAVA里面使用
Logger log = Logger.getLogger("MyClass");

log.debug("Test");

在Java中尾随/轮询日志文件的最有效方法[重复]

【中文标题】在Java中尾随/轮询日志文件的最有效方法[重复]【英文标题】:Most efficient way to tail/poll a log file in Java [duplicate] 【发布时间】:2012-04-12 06:11:51 【问题描述】:

有很多方法,可以使用创建程序并调用Unix tail 命令,但是这样做的问题是该进程必须安装在安装了tail 的Unix 机器上。

另一种选择是逐行读取文件,直到没有更多行,休眠一段时间,然后尝试读取下一行并重复。

问题是我如何/如何轮询正在写入的文件。 AFAIK在文件被修改时无法在Java中获取异步通知,因为这太低级(来自操作系统的东西)。我也知道没有支持这一点的库。

我在想更好的方法可能是在文件的修改日期休眠/轮询..?

有什么解决办法吗?

【问题讨论】:

【参考方案1】:

如果您可以使用 Java 7,则有 File Watchers,您可以实现所需的功能。File Notifications

对于 Java 6(和之前的版本),您必须使用 Apache Commons VFS (File Monitor) lib 来创建您自己的文件观察器。

如果您不能使用 Java 7 或使用第三方库(例如 commons 或 jnotify),您将不得不使用轮询线程自己编写一个文件看门狗。

【讨论】:

我怀疑文件通知仅用于添加和删除条目。有一个 ENTRY_MODIFY 但我认为它只是更改了目录条目而不是文件长度。【参考方案2】:

如果文件/目录发生更改,您可以使用java nio's WatchService 获取异步通知。这个tutorial 解释了它的使用方法。

【讨论】:

Java 7,在这种情况下不能使用它,但很好的建议。【参考方案3】:

您可以做些什么来简化这一点,即创建一个线程来轮询文件的大小并且只读取那么多,即它永远不会到达结尾。读取的数据可以写入管道,使您的主线程可以读取连续管道。

【讨论】:

【参考方案4】:

我不知道答案。只有两个提示 1. 也许 RandomAccessFile 会帮助你。 2. 尝试找到另一个开源程序,它可以做到这一点。 (例如,IntelliJ IDEA 就是这样做的)

【讨论】:

以上是关于log4j的使用,即java该如何使用日志文件的主要内容,如果未能解决你的问题,请参考以下文章

开源日志工具log4j

如何验证 Java 日志记录属性文件?

java工程中如何使用log4j输出指定路径日志文件,是java工程,不是web工程,谢谢

Java项目中如何使用log4j和slf4j实现日志打印

如何使用 Log4J 掩盖日志文件中的信用卡号?

Log4j 之类的日志框架如何保证日志语句的顺序?