package log4j;
import org.apache.log4j.Logger;
public class Log4jTest {
public static void main(String[] args) {
Logger log=Logger.getLogger(Log4jTest.class);
log.error("log4j");
}
}
<?xml version="1.0" encoding="GBK" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration debug="false" xmlns:log4j="http://jakarta.apache.org/log4j/"> <!-- ========================== 自定義輸出格式說明================================ --> <!-- %p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL --> <!-- #%r 輸出自應用啓動到輸出該log信息耗費的毫秒數 --> <!-- #%c 輸出所屬的類目,通常就是所在類的全名 --> <!-- #%t 輸出產生該日誌事件的線程名 --> <!-- #%m 輸出代碼中指定的消息--> <!-- #%n 輸出一個回車換行符,Windows平臺爲“\r\n”,Unix平臺爲“\n” --> <!-- #%d 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也可以在其後指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921 --> <!-- #%l 輸出日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。舉例:Testlog4.main(TestLog4.java:10) --> <!-- #%x: 輸出和當前線程相關聯的NDC(嵌套診斷環境),尤其用到像java servlets這樣的多客戶多線程的應用中。--> <!-- #%%: 輸出一個"%"字符 --> <!-- #%f: 輸出日誌消息產生時所在的文件名稱--> <!--- 可以在%與模式字符之間加上修飾符來控制其最小寬度、最大寬度、和文本的對齊方式。如:----> <!--- %20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小於20的話,默認的情況下右對齊。---> <!-- %-20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小於20的話,"-"號指定左對齊。---> <!-- %.30c:指定輸出category的名稱,最大的寬度是30,如果category的名稱大於30的話,就會將左邊多出的字符截掉,但小於30的話也不會有空格。--> <!-- %20.30c:如果category的名稱小於20就補空格,並且右對齊,如果其名稱長於30字符,就從左邊較遠輸出的字符截掉。--> <!-- ========================================================================== --> <!-- ========================== 輸出方式說明================================ --> <!-- Log4j提供的appender有以下幾種: --> <!-- org.apache.log4j.ConsoleAppender(控制檯), --> <!-- org.apache.log4j.FileAppender(文件), --> <!-- org.apache.log4j.jdbc.JDBCAppender(JDBC), --> <!-- org.apache.log4j.AsyncAppender(異步測試), --> <!-- org.apache.log4j.net.SMTPAppender(MAILL文件), --> <!-- org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌文件), --> <!-- org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件), --> <!-- org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方) --> <!-- ========================================================================== --> <!-- 輸出到日誌文件 --> <!-- 控制檯 --> <appender name="CON" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{MM-dd HH\:mm\:ss} [%5p ]-[%c\:%L] %3x - %m%n" /> </layout> </appender> <!-- 系統 --> <appender name="SYS" class="org.apache.log4j.RollingFileAppender"> <param name="File" value="${catalina.home}/logs/_sys.log" /> <param name="MaxFileSize" value="10MB" /> <param name="MaxBackupIndex" value="30" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{MM-dd HH\:mm\:ss} [%5p]-[%c\:%L] %3x - %m%n" /> </layout> <!--限制輸出級別--> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="levelMin" value="WARN" /> <param name="levelMax" value="ERROR" /> <param name="AcceptOnMatch" value="true" /> </filter> </appender> <!-- sql日誌 --> <appender name="SQL" class="org.apache.log4j.RollingFileAppender"> <param name="File" value="${catalina.home}/logs/sql.log" /> <param name="MaxFileSize" value="50MB" /> <param name="MaxBackupIndex" value="10" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="/* %d{MM-dd HH\:mm\:ss} %m%n" /> </layout> </appender> <!-- 輸出到日誌文件 每天一個日誌 --> <appender name="DAILY" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="${catalina.home}/logs/JOB.log" /> <param name="DatePattern" value="yyyyMMdd'.log'" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{MM-dd HH\:mm\:ss} [%5p]-[%c\:%L] %3x - %m%n" /> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="levelMin" value="DEUBG" /> <param name="levelMax" value="ERROR" /> <param name="AcceptOnMatch" value="true" /> </filter> </appender> <!-- 數據庫連接 --> <appender name="DATABASE" class="org.apache.log4j.jdbc.JDBCAppender"> <param name="URL" value="jdbc:oracle:thin:@192.168.0.59:1521:oanet" /> <param name="driver" value="oracle.jdbc.driver.OracleDriver" /> <param name="user" value="hdczoa" /> <param name="password" value="system" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="INSERT INTO hdczoa.LOG4J(stamp,thread, info_level,class,message) VALUES ('%d', '%t', '%p', '%c', %m)" /> </layout> </appender> <!-- 文件 --> <appender name="FILE" class="org.apache.log4j.RollingFileAppender"> <!-- 設置File參數:日誌輸出文件名 --> <param name="File" value="log/testlog4jxml_all.log" /> <!-- 設置是否在重新啓動服務時,在原有日誌的基礎添加新日誌 --> <param name="Append" value="true" /> <!-- 設置文件大小 --> <param name="MaxFileSize" value="1MB" /> <!-- 設置文件備份 --> <param name="MaxBackupIndex" value="10000" /> <!-- 設置輸出文件項目和格式 --> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p (%c:%L)- %m%n" /> </layout> </appender> <!-- 發郵件(只有ERROR時纔會發送,需要導入javamail包) --> <appender name="MAIL" class="org.apache.log4j.net.SMTPAppender"> <param name="threshold" value="debug" /> <!-- 日誌的錯誤級別 <param name="threshold" value="fatal"/> --> <!-- 緩存文件大小,日誌達到512K時發送Email --> <param name="BufferSize" value="512" /><!-- 單位K --> <param name="From" value="[email protected]" /> <param name="SMTPHost" value="smtp.163.com" /> <param name="Subject" value="juyee-log4jMessage" /> <param name="To" value="[email protected]" /> <param name="SMTPUsername" value="test" /> <param name="SMTPPassword" value="test" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss.SSS} [%p]-[%c] %m%n" /> </layout> </appender> <!--- 異步測試,當日志達到緩存區大小時候執行所包的appender --> <appender name="ASYNC" class="org.apache.log4j.AsyncAppender"> <param name="BufferSize" value="10" /> <appender-ref ref="MAIL" /> </appender> <!-- 設置包限制輸出的通道 --> <category name="org.cjj" additivity="false"> <!-- 日誌輸出級別,起碼可以有5個級別,可以擴展自己的級別,郵件發送必須是ERROR級別不好用,所以最後自己擴展一個郵件發送級別 --> <level value="ERROR" /> <appender-ref ref="FILE" /> <appender-ref ref="DAILY" /> <appender-ref ref="CON" /> <appender-ref ref="ASYNC" /> </category> <logger name="BOSSSYS"> <level value="ERROR" /> <appender-ref ref="SYS" /> </logger> <root> <level value="INFO" /> <appender-ref ref="CON" /> <appender-ref ref="SYS" /> </root> </log4j:configuration>