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>




發佈了154 篇原創文章 · 獲贊 26 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章