1. 程式人生 > >JavaEE——使用log4j進行日誌管理

JavaEE——使用log4j進行日誌管理

1、Log4j簡介

  作用:

1、 跟蹤程式碼的執行軌跡。

2、 輸出除錯資訊

三大組成:

1、 Logger-生成日誌。

2、 Appender-定義日誌輸出的目的地。

3、 Layout-指定日誌輸出的格式。

2、Logger元件

                  日誌共分為5種級別(ON開,OFF關這兩個不計算在內),從高到底(從嚴重到輕微)排序為:

                   FATAL—嚴重的錯誤,可能會導致程式不能正常執行. 類似System.exit(),整個專案都不能執行

                  ERROR– 錯誤,影響程式的正常執行。           類似當前執行緒掛了,但其它執行緒或元件還在跑

                   WARN– 警告,不會影響程式的執行。最好將此問題修正。

                    INFO – 一般資訊。不影響程式的執行。可能是使用者的除錯資訊。可有可無。等同於syserr

DEBUG – 一般的資訊。等同於sysout

                 上面五種級別分別對應以下幾個方法

                       fatal(Object)

                       error(Object)

                       warn(Object)

                        info(Object)

debug(Object)

              當資訊大於或是等於配置的級別時才會輸出日誌

3、Appender元件

  (僅要求記住兩個)

  Console – 控制檯。org.apache.log4j.ConsoleAppender

File   - 檔案。org.apache.log4j.FileAppender, org.apache.log4j.RollingFileAppender

4、Layout元件

  功能是定義日誌的輸出格式

  org.apache.log4j.HTMLLayout

  org.apache.log4j.PatternLayout (自定義)

  org.apache.log4j.SimpleLayout

  對於自定義格式,see page 256 chart 17-1。

  %d%p %c %m%n是我經常用的格式,要求記住.

  %d –具體的時間.

  %p –優先順序

  %c –資訊的輸出類

  %L—行號

  %m –資訊文字

  %n —換行符


5、Log4j的基本使用方法

    步1、將log4j.jar檔案,Copy到WEB-INF/lib)目錄下。

    (此時釋出程式,啟動程式,會發出警告資訊。資訊要求配置log4j.properties檔案)

  步2、在src目錄下(即WEB-INF/classes)建立一個log4j.properties檔案

    在WEB-INF/classes目錄下,為log4j的預設目錄。Log4j.properties也是log4j的預設檔名。

  步3、書寫log4j.properties檔案如下:

   #####配置根元素

log4j.rootLogger=INFO,file,console

#file的輸入地址為檔案

log4j.appender.file=org.apache.log4j.RollingFileAppender

#以下是具體的目錄

log4j.appender.file.File=d:/a.log

#每個檔案的最大大小

log4j.appender.file.MaxFileSize=512KB

#最多可以是多少個檔案

log4j.appender.file.MaxBackupIndex=3

#資訊的佈局格式-按指定的格式打出

log4j.appender.file.layout=org.apache.log4j.PatternLayout

#具體的佈局格式 - %d為時間

log4j.appender.file.layout.ConversionPattern=%d%p[%c]%m%n

#以下配置輸出到控制檯

log4j.appender.console=org.apache.log4j.ConsoleAppender

log4j.appender.console.layout=org.apache.log4j.PatternLayout

log4j.appender.console.layout.ConversionPattern=%d%p[%c]%m%n

####以下配置自己的類輸出日誌的資訊,即將com.three包下的日誌輸出到的目錄

###同時也會打出到控制檯。儘管是沒有配置打出到控制檯。但依據log4j的繼承性,它仍然具體打出的控制檯的功能。

log4j.category.com.three=INFO,myFile

log4j.appender.myFile=org.apache.log4j.RollingFileAppender

log4j.appender.myFile.File=d:/b.txt

log4j.appender.myFile.layout=org.apache.log4j.PatternLayout

log4j.appender.myFile.layout.ConversionPattern=%d%p[%c]%m%n

具體的說明,請參考上面以#號註釋的部分。

注意上面紅體字下面的部分,是書上沒有講的。此部分只配置對com.three包下的類指出日誌資訊。掌握具體配置的方法。

使用

<span style="color:#330033;">package cn.hncu.reg.sendMail;

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import org.apache.log4j.Logger;

public class SendEMailThread extends Thread {
	private String acode;
	private Logger log=Logger.getLogger(SendEMailThread.class);
	public SendEMailThread(String acode) {
		this.acode = acode;
	}

	@Override
	public void run() {
		Properties p=new Properties();
		p.setProperty("mail.host", "smtp.sina.com");
		p.setProperty("mail.smtp.auth", "true");
		Session session=Session.getDefaultInstance(p, new Authenticator() {

			@Override
			protected PasswordAuthentication getPasswordAuthentication() {
				PasswordAuthentication pa=new PasswordAuthentication("hncujava", "1234567");
				return pa;
			}
		});
		session.setDebug(true);
		MimeMessage msg=new MimeMessage(session);

		try {
			msg.setFrom( new InternetAddress("[email protected]") );
			msg.setRecipient(RecipientType.TO,  new InternetAddress("[email protected]"));
			msg.setSubject("啟用hncu賬號");
			StringBuilder sb=new StringBuilder();
			sb.append("請啟用郵箱:<a href='http://127.0.0.1:8080/mailWeb/ActiveServlet");
			sb.append("?acode="+acode+" '>點選啟用</a>");
			sb.append("<br/>如果啟用未成功,請複製下面地址到瀏覽器位址列進行手動啟用:");
			sb.append("http://www.hncu.cn/mailWeb/ActiveServlet?acode="+acode);
			msg.setContent(sb.toString(),"text/html;charset=utf-8");
			Transport.send(msg);
			log.info("郵件傳送成功");
		} catch (AddressException e) {
			log.error("郵箱地址錯誤,郵件傳送失敗");
			e.printStackTrace();
		} catch (MessagingException e) {
			e.printStackTrace();
			log.error("郵箱資訊格式錯誤,郵件傳送失敗");
		}
	}

}</span>




相關推薦

JavaEE——使用log4j進行日誌管理

1、Log4j簡介   作用: 1、 跟蹤程式碼的執行軌跡。 2、 輸出除錯資訊 三大組成: 1、 Logger類-生成日誌。 2、 Appender類-定義日誌輸出的目的地。 3、 Layout類-指定日誌輸出的格式。 2、Logger元件           

使用log4j進行日誌管理

基本使用 return 自定義 jar trac mil bsp family ogg 17.1、Log4j簡介 作用: 1、 跟蹤代碼的運行軌跡。 2、 輸出調試信息. 三大組成: 1、 Logger類-生成日誌。 2、 Appender類-定義日誌輸出的目的地。 3

Java使用log4j進行日誌管理

log4j是一個開源的日誌工具包,可以提供很好的日誌支援。可以通過配置檔案,定義日誌輸出的等級,日誌檔案格式,存放位置,儲存策略等。 1.引入log4j包 到官網下載所需要的jar包或者原始

tomcat 使用log4j進行日誌分割

原文  http://blog.csdn.net/lxm63972012/article/details/30028985 由於tomcat catalina.out日誌不會自動分割, 一、日誌分割所需包在附近中 1、 壓縮

java使用slf4j+log4j進行日誌記錄並將ERROR級別資訊入庫

1.maven 座標   <!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>lo

log4j遠端日誌管理

利用JPPF進行平行計算,計算任務執行在遠端節點上,那麼如何收集執行在遠端的任務日誌,用於跟蹤和分析呢? JPPF框架對此也有封裝,主要的實現思路是,通過自定義實現一個log4j的appender,對外提供JMX服務。客戶端(監控端)實現

Spring Boot 整合 log4j 實現日誌管理報錯:java.lang.IllegalArgumentException: LoggerFactory is not a Logback

問題: Caused by: java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Log

Spring Boot 整合 log4j 實現日誌管理

摘要:最近有時間,系統的學習了一下Spring Boot框架,感覺Spring Boot很好的集成了各種框架和元件,之前我們用Spring的時候,要配置好的依賴和xml檔案,現在使用Spring Boot,只需要一些少量的配置就可以實現。今天我們來看下Spring Boot

logrotate進行日誌管理

使用:     logrotate CONF_FILE+ 描述:     可自動輪轉,壓縮,刪除,郵寄日誌檔案。可每天,每週,每月或日誌檔案達到一定大小時進行操作。     通常logrotate是一個每天的cron計劃,一般不會在一天內多次修改日誌,除非輪轉是基於日誌大小的,     或者logrotate

tomcat7 配置log4j 進行日誌分割

在tomcat的使用中,tomcat的日誌catalina.out會無限增加,通常一段時間不管就會到幾個G,當其太大後,會影響到tomcat的啟動,而分割日誌的方法有很多,這裡記錄一下利用log4j進行日誌分割的方法。 環境: Centos7 JDK-1.8 Tomcat-

JAVA學習筆記_利用slf4j進行log4j日誌管理

slf4j介紹 slf4j官網:http://www.slf4j.org/ SLF4J,即簡單日誌門面(Simple Logging Facade for Java),不是具體的日誌解決方案,它只服務於各種各樣的日誌系統。SLF4J所提供的核心API是一些

JAVA中使用log4j及slf4j進行日誌輸出的方法

cto 所在 inf 官方 pat etl 註意 actor 結果   JAVA中輸出日誌比較常用的是log4j,這裏講下log4j的配置和使用方法,以及slf4j的使用。 一、下載log4j的架包,並導入項目中,如下: 二、創建log4j.prope

springboot日誌管理+集成log4j

簡單 info spring eve 日誌管理 exc group release 輸出結果 sprongboot使用的默認日誌框架是Logback。 可以在application.properties配置簡單日誌屬性,也可以單獨配置logback.xml格式,還可以使用

使用EventLog Analyzer進行VMware日誌管理

-o 圖片 col 分享 com ces analyze eventlog jpg 使用EventLog Analyzer進行VMware日誌管理

Spring Boot對log4j進行多環境不同日誌級別的控制.md

前言:當我們使用log4j記錄日誌時,僅通過log4j.properties對日誌級別進行控制,對於需要多環境部署的環境不是很方便,可能我們在開發環境大部分模組需要採用DEBUG級別,在測試環境可

commons-logging和Log4j 日誌管理/log4j.properties配置詳解

commons-logging和Log4j 日誌管理 (zz) 什麼要用日誌(Log)? 這個……就不必說了吧。 為什麼不用System.out.println()? 功能太弱;不易於控制。如果暫時不想輸出了怎麼辦?如果想輸出到檔案怎麼辦?如果想部分輸出怎麼辦?…… 為什麼

Kubernetes-基於EFK進行統一的日誌管理原理

1、統一日誌管理的整體方案 通過應用和系統日誌可以瞭解Kubernetes叢集內所發生的事情,對於除錯問題和監視叢集活動來說日誌非常有用。對於大部分的應用來說,都會具有某種日誌機制。因此,大多數容器引擎同樣被設計成支援某種日誌機制。對於容器化應用程式來說,最簡

基於EFK進行統一的日誌管理_Kubernetes中文社群

1、統一日誌管理的整體方案 通過應用和系統日誌可以瞭解Kubernetes叢集內所發生的事情,對於除錯問題和監視叢集活動來說日誌非常有用。對於大部分的應用來說,都會具有某種日誌機制。因此,大多數容器引擎同樣被設計成支援某種日誌機制。對於容器化應用程式來說,最簡單和最易接受的日誌記錄方法是將日誌

程式碼方式配置Log4j並實現執行緒級日誌管理 第五部分

文章目錄 一 第三方程式不應僅限於會用 二 同時按日期和檔案大小備份 三 調整ThreadLogger使用複寫的Appender 四 簡單測試下 五 結語 一 第三方程式不應僅限於會用   關於日誌

程式碼方式配置Log4j並實現執行緒級日誌管理 第四部分

文章目錄 一 非同步輸出模式 二 增加非同步輸出模式開關 三 重構日誌輸出介面 四 非同步處理執行緒 五 總結及一些其他的建議 一 非同步輸出模式   目前尚剩餘兩個需求,一個是實現日誌的非同步輸出