<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] # 簡介 log4j是非常優秀的開源日志記錄工具 * 控制日志輸出級別 * 控制日志信息輸送的目的地是控制臺,文件等 * 控制每一條日志的輸出格式 還有其他日志組件slf4j,logback # 使用步驟 1. 在項目中加入log4j的jar文件 2. 創建log4j.properties文件 3. 配置日志信息 4. 使用log4j記錄日志信息 # 日志管理器配置 ![](https://box.kancloud.cn/886b5f4eb2f012891afd15f2d864495b_1370x759.png) ~~~ 其中 [level] 是日志輸出級別,共有5級: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 ~~~ ~~~ Appender 為日志輸出目的地,Log4j提供的appender有以下幾種: org.apache.log4j.ConsoleAppender(控制臺), org.apache.log4j.FileAppender(文件), org.apache.log4j.DailyRollingFileAppender(每天產生一個日志文件), org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件), org.apache.log4j.WriterAppender(將日志信息以流格式發送到任意指定的地方) ~~~ ~~~ Layout:日志輸出格式,Log4j提供的layout有以下幾種: org.apache.log4j.HTMLLayout(以HTML表格形式布局), org.apache.log4j.PatternLayout(可以靈活地指定布局模式), org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串), org.apache.log4j.TTCCLayout(包含日志產生的時間、線程、類別等等信息) ~~~ # 配置片段 ~~~ #設置輸出地A2到文件(文件大小到達指定尺寸的時候產生一個新的文件) log4j.appender.A2=org.apache.log4j.RollingFileAppender #文件位置 log4j.appender.A2.File=D:/Javas/tomcat4/webapps/Eclipse/test.html #文件大小 log4j.appender.A2.MaxFileSize=500KB log4j.appender.A2.MaxBackupIndex=1 #指定采用html方式輸出 log4j.appender.A2.layout=org.apache.log4j.HTMLLayout ~~~ ~~~ # 每天產生一個文件 log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender # 日志文件的位置 log4j.appender.logfile.File=${netp.root}/WEB-INF/logs/netp.log log4j.appender.logfile.DatePattern=.yyyy-MM-dd # 當天備份文件名為netp.log,過去的記錄在名稱為 netp.log.yyyy-mm-dd的文件中。 # log4j.appender.R.DatePattern = .yyyy-MM 每月產生一個文件 log4j.appender.logfile.layout=org.apache.log4j.PatternLayout # 指定輸出到日志文件的格式:date priority [category]-<message>line_separator log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - <%m>%n ~~~ # 輸出格式類型 ![](https://box.kancloud.cn/f860528bb5eb78c4f695bb4e06ba8904_1252x751.png) ~~~ 打印參數: Log4J采用類似C語言中的printf函數的打印格式格式化日志信息,如下: %m 輸出代碼中指定的消息 %p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL %r 輸出自應用啟動到輸出該log信息耗費的毫秒數 %c 輸出所屬的類目,通常就是所在類的全名 %t 輸出產生該日志事件的線程名 %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 ) ~~~ # log4j配置 ~~~ ### 設置logger輸出級別和輸出目的地 ### ### 日志輸出級別 fatal>error>warn>info>debug log4j.rootLogger=DEBUG, stdout,logfile ### 把日志信息輸出到控制臺 ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %F %p - %m%n ### 把日志信息輸出到文件 ### log4j.appender.logfile=org.apache.log4j.FileAppender log4j.appender.logfile.File=target/log4j.log log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %F %p %m %n ~~~ # 配置詳解 ~~~ ################################################################################ #①配置根Logger,其語法為: # #log4j.rootLogger = [level],appenderName,appenderName2,... #level是日志記錄的優先級,分為OFF,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,ALL ##Log4j建議只使用四個級別,優先級從低到高分別是DEBUG,INFO,WARN,ERROR #通過在這里定義的級別,您可以控制到應用程序中相應級別的日志信息的開關 #比如在這里定義了INFO級別,則應用程序中所有DEBUG級別的日志信息將不被打印出來 #appenderName就是指定日志信息輸出到哪個地方。可同時指定多個輸出目的 ################################################################################ ################################################################################ #②配置日志信息輸出目的地Appender,其語法為: # #log4j.appender.appenderName = fully.qualified.name.of.appender.class #log4j.appender.appenderName.optionN = valueN # #Log4j提供的appender有以下幾種: #1)org.apache.log4j.ConsoleAppender(輸出到控制臺) #2)org.apache.log4j.FileAppender(輸出到文件) #3)org.apache.log4j.DailyRollingFileAppender(每天產生一個日志文件) #4)org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件) #5)org.apache.log4j.WriterAppender(將日志信息以流格式發送到任意指定的地方) # #1)ConsoleAppender選項屬性 # -Threshold = DEBUG:指定日志消息的輸出最低層次 # -ImmediateFlush = TRUE:默認值是true,所有的消息都會被立即輸出 # -Target = System.err:默認值System.out,輸出到控制臺(err為紅色,out為黑色) # #2)FileAppender選項屬性 # -Threshold = INFO:指定日志消息的輸出最低層次 # -ImmediateFlush = TRUE:默認值是true,所有的消息都會被立即輸出 # -File = C:\log4j.log:指定消息輸出到C:\log4j.log文件 # -Append = FALSE:默認值true,將消息追加到指定文件中,false指將消息覆蓋指定的文件內容 # -Encoding = UTF-8:可以指定文件編碼格式 # #3)DailyRollingFileAppender選項屬性 # -Threshold = WARN:指定日志消息的輸出最低層次 # -ImmediateFlush = TRUE:默認值是true,所有的消息都會被立即輸出 # -File = C:\log4j.log:指定消息輸出到C:\log4j.log文件 # -Append = FALSE:默認值true,將消息追加到指定文件中,false指將消息覆蓋指定的文件內容 # -DatePattern='.'yyyy-ww:每周滾動一次文件,即每周產生一個新的文件。還可以按用以下參數: # '.'yyyy-MM:每月 # '.'yyyy-ww:每周 # '.'yyyy-MM-dd:每天 # '.'yyyy-MM-dd-a:每天兩次 # '.'yyyy-MM-dd-HH:每小時 # '.'yyyy-MM-dd-HH-mm:每分鐘 # -Encoding = UTF-8:可以指定文件編碼格式 # #4)RollingFileAppender選項屬性 # -Threshold = ERROR:指定日志消息的輸出最低層次 # -ImmediateFlush = TRUE:默認值是true,所有的消息都會被立即輸出 # -File = C:/log4j.log:指定消息輸出到C:/log4j.log文件 # -Append = FALSE:默認值true,將消息追加到指定文件中,false指將消息覆蓋指定的文件內容 # -MaxFileSize = 100KB:后綴可以是KB,MB,GB.在日志文件到達該大小時,將會自動滾動.如:log4j.log.1 # -MaxBackupIndex = 2:指定可以產生的滾動文件的最大數 # -Encoding = UTF-8:可以指定文件編碼格式 ################################################################################ ################################################################################ #③配置日志信息的格式(布局),其語法為: # #log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class #log4j.appender.appenderName.layout.optionN = valueN # #Log4j提供的layout有以下幾種: #5)org.apache.log4j.HTMLLayout(以HTML表格形式布局) #6)org.apache.log4j.PatternLayout(可以靈活地指定布局模式) #7)org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串) #8)org.apache.log4j.TTCCLayout(包含日志產生的時間、線程、類別等等信息) #9)org.apache.log4j.xml.XMLLayout(以XML形式布局) # #5)HTMLLayout選項屬性 # -LocationInfo = TRUE:默認值false,輸出java文件名稱和行號 # -Title=Struts Log Message:默認值 Log4J Log Messages # #6)PatternLayout選項屬性 # -ConversionPattern = %m%n:格式化指定的消息(參數意思下面有) # #9)XMLLayout選項屬性 # -LocationInfo = TRUE:默認值false,輸出java文件名稱和行號 # #Log4J采用類似C語言中的printf函數的打印格式格式化日志信息,打印參數如下: # %m 輸出代碼中指定的消息 # %p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL # %r 輸出自應用啟動到輸出該log信息耗費的毫秒數 # %c 輸出所屬的類目,通常就是所在類的全名 # %t 輸出產生該日志事件的線程名 # %n 輸出一個回車換行符,Windows平臺為“\r\n”,Unix平臺為“\n” # %d 輸出日志時間點的日期或時間,默認格式為ISO8601,也可以在其后指定格式 # 如:%d{yyyy年MM月dd日 HH:mm:ss,SSS},輸出類似:2012年01月05日 22:10:28,921 # %l 輸出日志事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數 # 如:Testlog.main(TestLog.java:10) # %F 輸出日志消息產生時所在的文件名稱 # %L 輸出代碼中的行號 # %x 輸出和當前線程相關聯的NDC(嵌套診斷環境),像java servlets多客戶多線程的應用中 # %% 輸出一個"%"字符 # # 可以在%與模式字符之間加上修飾符來控制其最小寬度、最大寬度、和文本的對齊方式。如: # %5c: 輸出category名稱,最小寬度是5,category<5,默認的情況下右對齊 # %-5c:輸出category名稱,最小寬度是5,category<5,"-"號指定左對齊,會有空格 # %.5c:輸出category名稱,最大寬度是5,category>5,就會將左邊多出的字符截掉,<5不會有空格 # %20.30c:category名稱<20補空格,并且右對齊,>30字符,就從左邊交遠銷出的字符截掉 ################################################################################ ################################################################################ #④指定特定包的輸出特定的級別 #log4j.logger.org.springframework=DEBUG ################################################################################ #OFF,systemOut,logFile,logDailyFile,logRollingFile,logMail,logDB,ALL log4j.rootLogger =ALL,systemOut,logFile,logDailyFile,logRollingFile,logMail,logDB #輸出到控制臺 log4j.appender.systemOut = org.apache.log4j.ConsoleAppender log4j.appender.systemOut.layout = org.apache.log4j.PatternLayout log4j.appender.systemOut.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%n log4j.appender.systemOut.Threshold = DEBUG log4j.appender.systemOut.ImmediateFlush = TRUE log4j.appender.systemOut.Target = System.out #輸出到文件 log4j.appender.logFile = org.apache.log4j.FileAppender log4j.appender.logFile.layout = org.apache.log4j.PatternLayout log4j.appender.logFile.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%n log4j.appender.logFile.Threshold = DEBUG log4j.appender.logFile.ImmediateFlush = TRUE log4j.appender.logFile.Append = TRUE log4j.appender.logFile.File = ../Struts2/WebRoot/log/File/log4j_Struts.log log4j.appender.logFile.Encoding = UTF-8 #按DatePattern輸出到文件 log4j.appender.logDailyFile = org.apache.log4j.DailyRollingFileAppender log4j.appender.logDailyFile.layout = org.apache.log4j.PatternLayout log4j.appender.logDailyFile.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%n log4j.appender.logDailyFile.Threshold = DEBUG log4j.appender.logDailyFile.ImmediateFlush = TRUE log4j.appender.logDailyFile.Append = TRUE log4j.appender.logDailyFile.File = ../Struts2/WebRoot/log/DailyFile/log4j_Struts log4j.appender.logDailyFile.DatePattern = '.'yyyy-MM-dd-HH-mm'.log' log4j.appender.logDailyFile.Encoding = UTF-8 #設定文件大小輸出到文件 log4j.appender.logRollingFile = org.apache.log4j.RollingFileAppender log4j.appender.logRollingFile.layout = org.apache.log4j.PatternLayout log4j.appender.logRollingFile.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%n log4j.appender.logRollingFile.Threshold = DEBUG log4j.appender.logRollingFile.ImmediateFlush = TRUE log4j.appender.logRollingFile.Append = TRUE log4j.appender.logRollingFile.File = ../Struts2/WebRoot/log/RollingFile/log4j_Struts.log log4j.appender.logRollingFile.MaxFileSize = 1MB log4j.appender.logRollingFile.MaxBackupIndex = 10 log4j.appender.logRollingFile.Encoding = UTF-8 #用Email發送日志 log4j.appender.logMail = org.apache.log4j.net.SMTPAppender log4j.appender.logMail.layout = org.apache.log4j.HTMLLayout log4j.appender.logMail.layout.LocationInfo = TRUE log4j.appender.logMail.layout.Title = Struts2 Mail LogFile log4j.appender.logMail.Threshold = DEBUG log4j.appender.logMail.SMTPDebug = FALSE log4j.appender.logMail.SMTPHost = SMTP.163.com log4j.appender.logMail.From = xly3000@163.com log4j.appender.logMail.To = xly3000@gmail.com #log4j.appender.logMail.Cc = xly3000@gmail.com #log4j.appender.logMail.Bcc = xly3000@gmail.com log4j.appender.logMail.SMTPUsername = xly3000 log4j.appender.logMail.SMTPPassword = 1234567 log4j.appender.logMail.Subject = Log4j Log Messages #log4j.appender.logMail.BufferSize = 1024 #log4j.appender.logMail.SMTPAuth = TRUE #將日志登錄到MySQL數據庫 log4j.appender.logDB = org.apache.log4j.jdbc.JDBCAppender log4j.appender.logDB.layout = org.apache.log4j.PatternLayout log4j.appender.logDB.Driver = com.mysql.jdbc.Driver log4j.appender.logDB.URL = jdbc:mysql://127.0.0.1:3306/xly log4j.appender.logDB.User = root log4j.appender.logDB.Password = 123456 log4j.appender.logDB.Sql = INSERT INTOT_log4j(project_name,create_date,level,category,file_name,thread_name,line,all_category,message)values('Struts2','%d{yyyy-MM-ddHH:mm:ss}','%p','%c','%F','%t','%L','%l','%m') ~~~ # java代碼 maven ~~~ <!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> ~~~ ~~~ package com.study; import org.apache.log4j.Logger; import org.junit.Test; public class HelloWorld { /** * 創建log4j對象,里面寫當前類名 */ private Logger log4j = Logger.getLogger(HelloWorld.class); @Test public void testSet() { log4j.info("---info信息"); log4j.debug("---debug信息"); } } ~~~ # 常見錯誤 ![](https://box.kancloud.cn/0974a0c599384ccefda8eb52da66730e_789x64.png) 在你的項目的src目錄中創建一個名為log4j.properties的文本文件 log4j的配置文件沒有找到并且應用程序執行的時候沒有顯示配置,而log4j呢,是依靠Thread.getContextClassLoader().getResource() 這兩個類去定位文件的默認信息而不是直接去查他的文件系統,而你要將log4j放在合適的位置就需要知道類裝入器(class loader大致是這么個理)的搜索策略,log4j沒有提供一個默認的配置不管是輸入到控制臺還是到文件系統中,不過也可能在某些環境中被禁止 j2EE或servlet容器利用java的類加載系統,Sun改變了方法與java 2的發布方式,在java類裝載器2,被安排在一個分層的parent-child關系,當一個子類的類加載器需要找到一個類或資源,它首先代表父類的要求。 log4j只使用默認的類加載類forname()機制 結論就是:所以,如果你有問題,嘗試自己加載類或資源 將該方法插入到main函數中,可以自行打印日志信息了 ~~~ BasicConfigurator.configure(); //自動快速地使用缺省Log4j環境。 ~~~ 或者加一行這個代碼 ~~~ PropertyConfigurator.configure("/Users/jdxia/Desktop/study/hadoop/src/log4j.properties"); ~~~ 或者應該把ressources文件加入classpath就能工作 比如maven創建的普通java工程,是在 `target/classes`下面,把log4j扔到這邊就行
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看