log4j是apache的一個開源項目,表示log for java.是一個日誌工具,能夠將日誌信息輸出到文件,控制檯等其餘地方 ,還能夠定義日誌的輸出格式,另外還有日誌級別的區分,可經過配置文件去配置輸出格式,輸出目的地等信息.html
log4j2從名字就知道了,是log4j的升級版本,性能有了很大提高,增長了不少新特性(如自定義級別,lambda表達式)與新的API,直接與tomcat等服務器集成.java
點擊這裏下載web
做者用的是win10,下載zip.apache
搜索安裝:Eclipse New Java Projectjson
ctrl+shift+p調出命令面板,輸入new java projectapi
項目名tomcat
JavaSE版本服務器
建立完畢.app
在項目根路徑下新建lib文件夾,把下載的maven
這兩個jar包放進去. 下一步設置.classpath. 添加
<classpathentry kind="lib" path="lib/log4j-api-2.12.1.jar" /> <classpathentry kind="lib" path="lib/log4j-core-2.12.1.jar" />
src下直接創建test.java
test.java:
import org.apache.logging.log4j.*; public class test { private final static Logger logger = LogManager.getLogger(test.class.getName()); public static void main(String[] args) { logger.info("info"); logger.error("error"); logger.debug("debug"); logger.trace("trace"); logger.fatal("fatel"); } }
點擊main上的Run
結果:
輸出了fatel與error信息. 另外還提示了沒有找到log4j2配置文件,使用默認的配置文件,默認輸出到控制檯.
src下建立log4j2.xml配置文件.
log4j2的配置文件只能是.xml或.json或.jsn文件,默認會在classpath下尋找(在這裏classpath至關於圖中的src). 默認狀況下系統選擇配置文件的優先級以下:
這裏使用log4j2. xml.log4j2.xml以下:
<?xml version="1.0" encoding="UTF-8"?> <configuration status="OFF"> <appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </appenders> <loggers> <logger name="test" level="info" additivity="false"> <appender-ref ref="Console"/> </logger> <root level="info"> <appender-ref ref="Console"/> </root> </loggers> </configuration>
Logger三個主要的組件爲
<appenders>了輸出目的地,<Console>表示控制檯,<PatternLayout>定義了佈局,裏面的佈局表示時間格式(%d,HH:mm:ss.SSS),接着是日誌線程名(%t),%-5表示最小長度爲5左對齊,level表示輸出日誌級別. %logger表示輸出logger名稱. %m是%msg與%message的縮寫,表示輸出應用提供的與記錄事件有關的信息. %n表示換行.
<loggers>定義的logger與logger使用的appender.root爲log默認的輸出形式,若是一個類的沒有明確loggers中的輸出格式就會採用root的格式.
沒有以前的"沒有配置文件"的提示了.
使用插件maven for java建立,命令面板(ctrl+shift+p)輸入.
選擇quickstart.
選擇版本.
最後選擇項目路徑便可. 在控制檯中vscode會下載相關文件,而後會提示以交互模式建立:
這裏等一會就行了. 而後會提示輸入一些值.
ok.
在<dependencies>中添加以下代碼:
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.12.1</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.12.1</version> </dependency>
如下是完整的pom.xml:
<?xml version="1.0" encoding="UTF-8" ?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>test</artifactId> <version>1.0-SNAPSHOT</version> <name>test</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.12.1</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.12.1</version> </dependency> </dependencies> <build> <pluginManagement> <!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> <plugins> <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle --> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.1.0</version> </plugin> <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> </plugin> <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle --> <plugin> <artifactId>maven-site-plugin</artifactId> <version>3.7.1</version> </plugin> <plugin> <artifactId>maven-project-info-reports-plugin</artifactId> <version>3.0.0</version> </plugin> </plugins> </pluginManagement> </build> </project>
右鍵選擇Update project configuration.
在java目錄下新建log4j2.xml.
<?xml version="1.0" encoding="UTF-8"?> <configuration status="OFF"> <appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> </Console> </appenders> <loggers> <logger name="com.example.App" level="info" additivity="false"> <appender-ref ref="Console"/> </logger> <root level="info"> <appender-ref ref="Console"/> </root> </loggers> </configuration>
修改默認的App.java.
package com.example; import org.apache.logging.log4j.*; public class App { private static final Logger logger = LogManager.getLogger(App.class.getName()); public static void main( String[] args ) { logger.info("info"); logger.error("error"); logger.debug("debug"); logger.trace("trace"); logger.fatal("fatel"); } }
run便可.
什麼也不用選,直接next.
勾選從模板建立項目.
選好路徑與填好項目名便可.
選擇剛纔的lib目錄,或者本身手動改爲兩個jar包(log4j-api-版本.jar,log4j-core-版本.jar).
項目結構以下:
Main.java
package com.test; import org.apache.logging.log4j.*; public class Main { private static final Logger logger = LogManager.getLogger(Main.class.getName()); public static void main(String[] args) { logger.info("info"); logger.error("error"); logger.debug("debug"); logger.trace("trace"); logger.fatal("fatel"); } }
在src下新建log4j2.xml.
<?xml version="1.0" encoding="UTF-8"?> <configuration status="OFF"> <appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> </Console> </appenders> <loggers> <logger name="com.test.Main" level="info" additivity="false"> <appender-ref ref="Console"/> </logger> <root level="info"> <appender-ref ref="Console"/> </root> </loggers> </configuration>
直接點擊run按鈕.
這裏做者偷懶就直接在上面項目的基礎上新建模塊不新建項目了.
都不用選直接next.
填好GroupId與ArtifactId以後next.
最後選好位置.
pom.xml中加入:
<dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.12.1</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.12.1</version> </dependency> </dependencies>
如下是完整的pom.xml文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>test</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.12.1</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.12.1</version> </dependency> </dependencies> </project>
右鍵選擇同步pom.xml.
選擇右下角彈出的提示中的Import Changes.
在target下的classes下建立log4j2.xml.
log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?> <configuration status="OFF"> <appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> </Console> </appenders> <loggers> <logger name="com.example.test" level="info" additivity="false"> <appender-ref ref="Console"/> </logger> <root level="info"> <appender-ref ref="Console"/> </root> </loggers> </configuration>
建立包與test.java.
test.java
package com.example; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class test { private static final Logger logger = LogManager.getLogger(test.class.getName()); public static void main(String[] args) { logger.info("info"); logger.error("error"); logger.debug("debug"); logger.trace("trace"); logger.fatal("fatel"); } }
新建配置Application.
輸入Main class與名字.
run.
這篇文章主要寫了log4j2的入門級別的使用.如下是做者的公衆號,歡迎關注.
參考: 1.log4j2(1)