log4j是Apache的一个开源项目,它是一个用于记录日志信息的灵活性和可靠性的Java日志组件。它具有灵活的配置功能,可以根据不同的应用场景进行自定义配置,从而使得日志信息能够很好地被记录和分析。
log4j安装配置步骤如下:
1、下载log4j jar包:
wget http://mirrors.tuna.tsinghua.edu.cn/apache/logging/log4j/2.13.3/apache-log4j-2.13.3-bin.tar.gz tar -zxvf apache-log4j-2.13.3-bin.tar.gz
2、将jar包复制到工程中:
cp apache-log4j-2.13.3/log4j-api-2.13.3.jar /usr/local/project/libs
3、在工程中引入jar包:
org.apache.logging log4j-api [2, 3)
4、在工程中新建一个 log4j 配置文件 log4j2 .xml :
5、在代码中加入如下代码来加载 log4j 配置文件:
public static void main(String[] args) { LoggerContext context = (LoggerContext) LogManager .getContext(false); File file = new File("src/main/resources/configuration/log4j2 .xml"); context .setConfigLocation(file .toURI()); }
6、在代码中使用 log 方法来打印日志信息: p >< pre > Logger logger = LogManager . getLogger ( MyClass . class ) ; logger . info ( "This is an info message" ) ; logger . debug ( "This is a debug message" ) ; logger . error ( "This is an error message" ) ; < / pre > < p > 通过上述步骤就可以安装并配置 log 4 j ,使用 log 4 j 可以方便地对应用进行日志跟踪和分析。 < / p >
Log4j API包是根据Apache软件许可证分发的。
最新的log4j版本,包括全源代码,类文件和文档可以在http://logging.apache.org/log4j/找到。
我们可以从上面的链接下载apache-log4j-x.x.x.tar.gz或zip文件。
注意:log4j以下版本存在0day漏洞,尽量避免使用这些版本!!!
Apache log4j2 2.0 - 2.14.1
我们可以使用log4j将信息记录到各种目的地,例如发送电子邮件,数据库或文件。
有一个我们需要放到classpath的库的列表,以便log4j可以拿起它并使用它。
例如,当从log4j发出电子邮件时,我们需要电子邮件库jar文件。
库是可选的,并且取决于我们将要与log4j框架一起使用的功能。
JavaMail API(mail.jar): 从https://glassfish.dev.java.net/javaee5/mail/用于基于电子邮件的日志记录。
JavaBeans Activation Framework(activation.jar): 来自http://java.sun.com/products/javabeans/jaf/index.jsp。
Java Message Service: 用于JMS和JNDI。
XML Parser(Xerces.jar): 来自http://xerces.apache.org/xerces-j/install.html。
首先,使用以下maven命令创建一个空的Maven项目。
C:mvn_test>mvn archetype:generate -DgroupId=com..ide -DartifactId=MyTest -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
然后,转到项目文件夹并找到pom.xml,添加以下依赖关系。
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
之后,将以下代码添加到在resources文件夹下创建的log4j.properties。
MyTest | +-src | +-main | +-java | | | +-com | | | +- | | | +-ide | +-resources | +- log4j.properties
如上面的文件夹结构所示,资源位于java文件夹的保存级别。
对于Java Web应用程序,将log4j.properties文件存储在WEB-INF/classes目录下 将以下配置保存到log4j.properties文件中。# Root logger option log4j.rootLogger=DEBUG, stdout, file # Redirect log messages to console 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=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n # Redirect log messages to a log file, support file rolling. log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=C:log4j.log log4j.appender.file.MaxFileSize=5MB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
最后一个%m%n
配置log4j以添加换行符。
%L设置从记录请求的行号。
%c{1}引用通过 getLogger()
设置的日志记录名称。
%-5p设置日志记录优先级,如DEBUG或ERROR。
最后添加以下代码App.java并运行应用程序。
package com..ide; import org.apache.log4j.Logger; public class App{ final static Logger logger = Logger.getLogger(App.class); public static void main(String[] args) { App obj = new App(); obj.runMe(""); } private void runMe(String parameter){ if(logger.isDebugEnabled()){ logger.debug("This is debug : " + parameter); } if(logger.isInfoEnabled()){ logger.info("This is info : " + parameter); } logger.warn("This is warn : " + parameter); logger.error("This is error : " + parameter); logger.fatal("This is fatal : " + parameter); } }
以下代码显示如何记录异常。
import org.apache.log4j.Logger; public class App { final static Logger logger = Logger.getLogger(App.class); public static void main(String[] args) { App obj = new App(); try { obj.divide(); } catch (ArithmeticException ex) { logger.error("Sorry, something wrong!", ex); } } private void divide() { int i = 10 / 0; } }
数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。Java 语言中提供的数组是用来...
java.util.Scanner是Java5的新特征,我们可以通过 Scanner 类来获取用户的输入。下面是创建 Scanner 对象的基本语法: Scanner s...
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。 包的作用1 把功能相似或相关的类或接口组织在同一个包中,方便...
Java 实例以下实例演示了如何使用 retainAll () 方法来删除包含在另外一个数组中的数组元素:此处说明有些拗口,可以简单的理解...
Java教程 -Java continue语句 continue 语句强制循环的早期迭代。在 while 和 do-while 循环中, continue 语句使控制转移到条件...