java日誌常用包log4j的簡單介紹

本文目錄一覽:

log4j的使用,即java該如何使用日誌文件

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

1、 新建一個Java工程,導入Log4j包,pom文件中對應的配置代碼如下:

!– log4j support —

dependency

   groupIdlog4j/groupId

   artifactIdlog4j/artifactId

   version1.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] %d{yyyy-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 = %-d{yyyy-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 = %-d{yyyy-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文件,內容分別如下,可以看出:

請教一個簡單的java日誌怎樣寫

關於java日誌,下面以Log4j為例子說明(供參考)。

1、導包(Log4j所依賴的jar包)

2、配置屬性文件。如下:

3、遍寫調用日誌方法的介面

public interface LoggerUtil {

 

    // 得到Logger,用於列印日誌

    Logger logger = Logger.getLogger(LoggerUtil.class);

}

4、使用Log4j

//刪除數據

    @RequestMapping(“/delete.do”)

    public String delete(Students students) {

 

        try {

             

            stuService.delete(students);

        } catch (Exception e) {

            // 直接使用

            LoggerUtil.logger.error(e.getMessage());

        }

        return “redirect:selectAll.do”;

    }

在Java中log4j日誌記錄

例子如下:

/**

* filename : MiProperty.java

* Title : 北京minstar軟體工作室

* Description: 關於log4j包的最簡單應用

* @Copyright : Copyright (c) 2008,北京minstar軟體工作室

* Company : 北京minstar軟體工作室

* @author : Zhao.Jian

* Date : 2007-8-16

* @version 1.0.0.0

* @Development Environment : Eclipse 3.1.0

*/

package app;

import java.io.FileInputStream;

import java.util.Properties;

import org.apache.log4j.Logger;

import org.apache.log4j.PropertyConfigurator;

public class logjTest {

public static final Logger logger = Logger.getLogger(logjTest.class);

public static void main(String args[])throws Exception{

String configFile = “log4j.properties”;

PropertyConfigurator.configure(configFile);

logger.info(“測試log4j之包的使用!”);

Properties perties = new Properties();

FileInputStream fis = new FileInputStream(configFile);

perties.load(fis);

String str=perties.getProperty(“log4j.rootLogger”);

logger.info(“測試獲取key值,如log4j.rootLogger=”+str);

}

}

java中如何使用log4j將記錄的操作日誌信息

主要是通過配置文件

1.1 Log4j 支持兩種配置文件格式,一種是 XML 格式的文件,一種是 Java 特性文件    lg4j.properties (鍵 = 值)。

Logger 負責處理日誌記錄的大部分操作。 

其語法為: 

log4j.rootLogger = [ level ] , appenderName, appenderName, …

2.1 level 是日誌記錄的優先順序,分為 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 ALL

或者自定義的級別。

2.2Log4j 建議只使用四個級別,優先順序從高到低分別是 ERROR 、 WARN 、 INFO 、 DEBUG

2.3通過在這裡定義的級別,您可以控制到應用程序中相應級別的日誌信息的開關。比如在這裡定義了

INFO 級別,只有等於及高於這個級別的才進行處理,則應用程序中所有 DEBUG 級別的日誌信息將不被列印出來。

2.4 ALL: 列印所有的日誌,

OFF :關閉所有的日誌輸出。 appenderName 就是指定日誌信息輸出到哪個地方。可同時指定多個輸出目的地。

配置日誌信息輸出目的地 Appender 負責控制日誌記錄操作的輸出。

3.1log4j.appender.appenderName = fully.qualified.name.of.appender.class 

3.2log4j.appender.appenderName.option1 = value1 

3.3log4j.appender.appenderName.optionN = valueN

Log4j 提供的 appender

4.1org.apache.log4j.ConsoleAppender (控制台), 

4.2org.apache.log4j.FileAppender (文件), 

4.3org.apache.log4j.DailyRollingFileAppender (每天產生一個日誌文件), 

4.4org.apache.log4j.RollingFileAppender

(文件大小到達指定尺寸的時候產生一個新的文件),可通過 log4j.appender.R.MaxFileSize=100KB

設置文件大小,還可通過 4.5log4j.appender.R.MaxBackupIndex=1 設置為保存一個備份文件。 

4.6org.apache.log4j.WriterAppender (將日誌信息以流格式發送到任意指定的地方)

5.Layout

5.1org.apache.log4j.HTMLLayout (以 HTML 表格形式布局),

5.2org.apache.log4j.PatternLayout (可以靈活地指定布局模式),

5.3org.apache.log4j.SimpleLayout (包含日誌信息的級別和信息字元串),

5.4org.apache.log4j.TTCCLayout (包含日誌產生的時間、線程、類別等等信息)

6.格式化日誌信息

Log4J 採用類似 C 語言中的 printf 函數的列印格式格式化日誌信息,列印參數如下:

6.1%m 輸出代碼中指定的消息

6.2%p 輸出優先順序,即 DEBUG , INFO , WARN , ERROR , FATAL

6.3%r 輸出自應用啟動到輸出該 log 信息耗費的毫秒數

6.4%c 輸出所屬的類目,通常就是所在類的全名

6.5%t 輸出產生該日誌事件的線程名

6.6%n 輸出一個回車換行符, Windows 平台為 「rn」 , Unix 平台為 「n」

6.7%d 輸出日誌時間點的日期或時間,默認格式為 ISO8601 ,也可以在其後指定格式,比如: %d{yyyy MMM dd HH:mm:ss,SSS} ,輸出類似: 2002 年 10 月 18 日 22 : 10 : 28 , 921

6.8%l 輸出日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。

7.  log4j.propertie 示例文件:

log4j.rootCategory=INFO, stdout,file

7.1 定義名為 stdout 的輸出端的類型

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

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

log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n

7.2定義名為 file 的輸出端的類型為每天產生一個日誌文件。

log4j.appender.file =org.apache.log4j.DailyRollingFileAppender

log4j.appender.file.File=log.txt

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

log4j.appender.file.layout.ConversionPattern=%d-[TS] %p %t %c – %m%n

7.3指定 com.neusoft 包下的所有類的等級為 DEBUG 。可以把 com.neusoft 改為自己項目所用的包名。

log4j.logger.com.neusoft=DEBUG

7.4如果項目中沒有配置 EHCache ,則配置以下兩句為 ERROR 。

log4j.logger.com.opensymphony.oscache=ERROR

log4j.logger.net.sf.navigator=ERROR

8struts 配置

log4j.logger.org.apache.commons=ERROR

log4j.logger.org.apache.struts=WARN

8.1 displaytag 配置

log4j.logger.org.displaytag=ERROR

8.2  spring 配置

log4j.logger.org.springframework=DEBUG

8.3  ibatis 配置

log4j.logger.com.ibatis.db=WARN

8.4   hibernate 配置

log4j.logger.org.hibernate=DEBUG

log4j.logger.org.apache.velocity=FATAL

log4j.logger.com.canoo.webtest=WARN

java 中 log4j 的概念、作用以及如何使用

我直接用最簡單的實例你一看就懂了的,希望你耐心看下去:

Log4j實在是很熟悉,幾乎所有的Java項目都用它啊。但是我確一直沒有 搞明白。終於有一天我受不了了,定下心去看了一把文檔,才兩個小時,我終於搞明白了。一般情況下Log4j總是和Apache Commons-logging一起用的,我也就一起介紹吧。多了個東西不是更麻煩,而是更簡單![if !supportLists]一、[endif]Log4j的簡單思想Log4j真的很簡單,簡單到令人髮指的地步。不是要記錄日誌嗎?那就給你一個Log,然後你用Log來寫東西就行了,先來一個完整類示例:packagetest;importorg.apache.commons.logging.Log;importorg.apache.commons.logging.LogFactory;publicclass Test { static Log log = LogFactory.getLog(Test.class); public void log(){ log.debug(“Debug info.”); log.info(“Info info”); log.warn(“Warn info”); log.error(“Error info”); log.fatal(“Fatal info”); } /** * @param args */ public static void main(String[] args) { Test test = new Test(); test.log(); }}別怕,看完這篇文章你就會覺得很簡單了。 Log4j默認把日誌信息分為五個等級 debug info warn error fatal雖然可以自己添加等級,但是我覺得沒有必要,五個夠用了吧!你要寫入信息的時候就把信息歸為五個等級中的一個,然後調用相應的函數即可。 分五個等級到底有什麼用呢?日誌信息到底寫到哪裡去了? 「LogFactory.getLog(Test.class)」又是什麼意思捏?接著往下看吧!Log4j的關鍵之處在於它的繼承思想。也就是一個Log可以繼承另外一個Log的屬性(輸出到哪裡,日誌等級,日誌格式等等)。怎麼繼承?Log4j是根據Log的名字來判斷繼承關係的,比如:名字為「com.zhlmmc.lib」的Log就是「com.zhlmmc.lib.log」的parent,明白了吧!Log4j還有一個rootLogger,相當於Java的Object。回過頭來看「LogFactory.getLog(Test.class)」這裡的「Test.class」事實上傳進去的是Test這個類的完整路徑(包名+類名),「test.Test」。這樣如果存在「test」這個Log 那麼Test這個Log就繼承它,否則就繼承rootLogger。 那具體的Log屬性是在哪裡定義的呢?[if !supportLists]二、[endif]常見的配置文件雖然可以用xml或者在運行時用Java來配置Log4j,但還是properties文件好用啊!log4j.rootLogger=info,stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayout#Pattern to output the caller’s file name and line number.log4j.appender.stdout.layout.ConversionPattern=%5p[%t] (%F:%L) – %m%n分析一下:第一行,配置log4j.rootLogger你明白吧。應為它是根,總得配 置一下,否則別的Log繼承什麼啊。其他的Log可以配置也可以不配置。等號後面的第一個參數表示日誌級別,可以填五個級別中的一種,後面的參數都是讓 Log知道輸出到哪裡,如果你想讓日誌輸出到兩個地方就加兩個輸出參數,比如:log4j.rootLogger=info, stdout, file這裡的info表示,該Log的日誌級別為info,所有級別小於info的日誌都不會被記錄。比如使用這個配置文件的話,我剛開始舉的那個類中log.debug(“Debug info.”);這句話是不起作用的,因為debug的級別小於info。這樣就很容易控制什麼信息在調試的時候要顯示,什麼信息在發布的時候要去掉。這些都不用改代碼,很方便吧。但,stdout和file又是什麼呢?接著往下看,就是配置stdout了,這個名字是隨便取的,你可以叫它A:log4j.appender.A=org.apache.log4j.ConsoleAppender那麼上面的rootLogger的參數stdout也要改成A,其他用到的地方當然也要改。這裡的關鍵不是名字,而是appender類型,比如這裡的「ConsoleAppender」,看明白了吧,輸出到 Console。後面兩行都是設置日誌格式的,一般情況下你就照抄吧。既然是最簡入門關注於理解Log4j的工作原理,我就不介紹file類型的 appender了,一搜一大把。在實際的項目開發中,很可能遇到所引用的包用Log4j來記錄日誌,比如Hibernate。那麼在這裡你可以很容易的控制這個包如何記錄日誌。比如在上面的配置文件中加一行:log4j.logger.org.hibernate=fatal 那麼所有org.hibernate包下面的類就只會顯示很少的信息,因為fatal的級別最高啊。[if !supportLists]三、[endif]部署別怕,這可不是部署Tomcat。把log4j的包和commons- logging的包(加在一起才兩個)放到classpath下面。然後把配置文件保存為log4j.properties,也放在classpath下 面(如果用Eclipse的話,放在src目錄下即可)。然後你就可以跑了。

原創文章,作者:AUGJ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/132439.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
AUGJ的頭像AUGJ
上一篇 2024-10-03 23:52
下一篇 2024-10-03 23:52

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29

發表回復

登錄後才能評論