<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Log4j `XMLLayout` – 以 XML 格式創建日志 > 原文: [https://howtodoinjava.com/log4j/how-to-create-logs-in-xml-format-using-log4j/](https://howtodoinjava.com/log4j/how-to-create-logs-in-xml-format-using-log4j/) [Log4j](//howtodoinjava.com/category/frameworks/log4j/ "log4j tutorials") 是一個簡單而靈活的日志記錄框架。 日志記錄為開發人員提供了有關應用故障的詳細上下文。 使用 log4j 可以在運行時啟用日志記錄,而無需修改應用二進制文件。 log4j 包的設計目的是使這些語句可以保留在出廠代碼中,而不會造成高昂的性能成本。 Log4j 帶有多個選項來格式化框架創建的日志文件。 它也可以創建簡單的日志文件,html 日志文件或 xml 日志文件。 在這篇文章中,我將展示用于配置 log4j 以生成 xml 格式的日志的示例代碼。 **步驟 1)創建一個 Maven Java 項目并更新 log4j 依賴項** 請遵循與[**使用 maven 配置 log4j**](//howtodoinjava.com/log4j/how-to-configure-log4j-using-maven/ "How to configure log4j using maven") 有關的步驟。 **步驟 2)在`log4j.properties`文件**中配置`XMLLayout` `XMLLayout`類擴展了抽象的`org.apache.log4j.Layout`類,并從其基類覆蓋`format()`方法以提供 XML 樣式的格式。 這在 xml 標記中提供了以下信息: 1. **`log4j:event`**:該標簽包含有關記錄器設置的信息,例如記錄器名稱,時間戳,級別和線程。 2. **`log4j:message`**:它包含 CDATA 格式的實際日志消息。 3. **`log4j:locationInfo`**:它包含類文件中 log 語句的位置。 ```java # Define the root logger with file appender log4j.rootLogger = DEBUG, XML # Define the file appender log4j.appender.XML=org.apache.log4j.FileAppender log4j.appender.XML.File=application.xml # Define the xml layout for file appender log4j.appender.XML.layout=org.apache.log4j.xml.XMLLayout log4j.appender.XML.layout.LocationInfo=true log4j.appender.XML.Threshold=DEBUG ``` **步驟 3)配置`log4j.properties`并測試應用** ```java package com.howtodoinjava; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class Log4jXMLLayoutExample { static Logger log = Logger.getLogger(Log4jXMLLayoutExample.class); public static void main(String[] args) { PropertyConfigurator.configure("log4j.properties"); log.debug("Sample debug message"); log.info("Sample info message"); log.error("Sample error message"); log.fatal("Sample fatal message"); } } ``` 輸出將記錄在項目根文件夾中的`application.xml`文件中。 示例內容將如下所示: ```java <log4j:event logger="com.howtodoinjava.Log4jXMLLayoutExample" timestamp="1368417841874" level="DEBUG" thread="main"> <log4j:message><!&#91;CDATA&#91;Sample debug message&#93;&#93;></log4j:message> <log4j:locationInfo class="com.howtodoinjava.Log4jXMLLayoutExample" method="main" file="Log4jXMLLayoutExample.java" line="14"/> </log4j:event> <log4j:event logger="com.howtodoinjava.Log4jXMLLayoutExample" timestamp="1368417841893" level="INFO" thread="main"> <log4j:message><!&#91;CDATA&#91;Sample info message&#93;&#93;></log4j:message> <log4j:locationInfo class="com.howtodoinjava.Log4jXMLLayoutExample" method="main" file="Log4jXMLLayoutExample.java" line="15"/> </log4j:event> <log4j:event logger="com.howtodoinjava.Log4jXMLLayoutExample" timestamp="1368417841893" level="ERROR" thread="main"> <log4j:message><!&#91;CDATA&#91;Sample error message&#93;&#93;></log4j:message> <log4j:locationInfo class="com.howtodoinjava.Log4jXMLLayoutExample" method="main" file="Log4jXMLLayoutExample.java" line="16"/> </log4j:event> <log4j:event logger="com.howtodoinjava.Log4jXMLLayoutExample" timestamp="1368417841893" level="FATAL" thread="main"> <log4j:message><!&#91;CDATA&#91;Sample fatal message&#93;&#93;></log4j:message> <log4j:locationInfo class="com.howtodoinjava.Log4jXMLLayoutExample" method="main" file="Log4jXMLLayoutExample.java" line="17"/> </log4j:event> ``` ## 要點 如果您嘗試在瀏覽器中查看以上文件,它將顯示解析錯誤:“***XML 解析錯誤:前綴未綁定到名稱空間***”。 這是預期的,因為日志文件不包含任何根元素。 同樣根據[`XMLLayout`](https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/XMLLayout.html "XMLLayout java document")的 Java 文檔,“`XMLLayout`的輸出由一系列`log4j.event`元素組成,如`log4j.dtd`中所定義。 它不會輸出完整的格式正確的 XML 文件。 該輸出被設計為作為*外部實體*包含在單獨的文件中,以形成正確的 XML 文件。” 例如,如果`abc`是`XMLLayout`輸出所在的文件的名稱,那么格式正確的 XML 文件將是: ```java <!DOCTYPE log4j:eventSet PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd" &#91;<!ENTITY data SYSTEM "abc">]> <log4j:eventSet version="1.2" xmlns:log4j="http://jakarta.apache.org/log4j/"> <log4j:event logger="com.howtodoinjava.Log4jXMLLayoutExample" timestamp="1368417841874" level="DEBUG" thread="main"> <log4j:message><!&#91;CDATA&#91;Sample debug message&#93;&#93;></log4j:message> <log4j:locationInfo class="com.howtodoinjava.Log4jXMLLayoutExample" method="main" file="Log4jXMLLayoutExample.java" line="14"/> </log4j:event> <log4j:event logger="com.howtodoinjava.Log4jXMLLayoutExample" timestamp="1368417841893" level="INFO" thread="main"> <log4j:message><!&#91;CDATA&#91;Sample info message&#93;&#93;></log4j:message> <log4j:locationInfo class="com.howtodoinjava.Log4jXMLLayoutExample" method="main" file="Log4jXMLLayoutExample.java" line="15"/> </log4j:event> <log4j:event logger="com.howtodoinjava.Log4jXMLLayoutExample" timestamp="1368417841893" level="ERROR" thread="main"> <log4j:message><!&#91;CDATA&#91;Sample error message&#93;&#93;></log4j:message> <log4j:locationInfo class="com.howtodoinjava.Log4jXMLLayoutExample" method="main" file="Log4jXMLLayoutExample.java" line="16"/> </log4j:event> <log4j:event logger="com.howtodoinjava.Log4jXMLLayoutExample" timestamp="1368417841893" level="FATAL" thread="main"> <log4j:message><!&#91;CDATA&#91;Sample fatal message&#93;&#93;></log4j:message> <log4j:locationInfo class="com.howtodoinjava.Log4jXMLLayoutExample" method="main" file="Log4jXMLLayoutExample.java" line="17"/> </log4j:event> </log4j:eventSet> ``` 這種方法增強了`XMLLayout`和嵌入它的附加器的獨立性。 **祝您學習愉快!**
                  <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>

                              哎呀哎呀视频在线观看