Dom4j與Log4j的路徑問題

來源:互聯網
上載者:User
 

Dom4jLog4j的路徑問題

 

我們在寫java代碼的時候,有時候需要對檔案進行讀寫,特別是對一些設定檔的讀寫,比如對log4j.properties這樣的日誌設定檔的讀取,放到那個目錄地下才能夠正確的配置Log4j。還有,當我們產生或讀取XML文檔的時候,我們在程式中如何寫才能讀取到XML檔案或者才能把XML檔案放到合適的地方。

下面舉幾個例子

1.          Log4j的設定檔路徑問題。

首先看看我的程式的目錄結構:

如在程式中寫成PropertyConfigurator.configure("log4j.properties");

那麼把檔案log4j.properties放到如下圖的位置將能正確執行,

也就是說原始碼中的目前的目錄是指工程的根目錄。如果我想在根目錄下面建一個config的目錄,然後把設定檔log4j.properties放到這個目錄下面,那麼我們必須把程式的代碼改為

“PropertyConfigurator.configure("./config/log4j.properties");”注意第一個/前面的那個“.”,否則程式將不能正確運行。

好了,這裡給出我的log4j.properties的檔案清單,使用log4j的原始碼,最後給出記錄檔的輸出,以便大家方便使用。

log4j.properties的檔案:

#####################################################################

# Categories and levels

#####################################################################

log4j.rootCategory=DEBUG, FileApp, ConApp

log4j.category.de.jayefem=DEBUG, FileApp, ConApp

#####################################################################

# Appenders

#####################################################################

# ConApp is set to be a ConsoleAppender.

log4j.appender.ConApp=org.apache.log4j.ConsoleAppender

log4j.appender.ConApp.Target=System.out

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

log4j.appender.ConApp.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

# FileApp

log4j.appender.FileApp=org.apache.log4j.RollingFileAppender

log4j.appender.FileApp.File=./log/debug.log

log4j.appender.FileApp.MaxFileSize=500KB

# Keep one backup file

log4j.appender.FileApp.MaxBackupIndex=1

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

log4j.appender.FileApp.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

日誌輸出的目錄為工程根目錄下面的log

Log檔案的輸出:

2006-08-07 05:12:58,109 [main] DEBUG niu.xml.ModifyXml - 開始調試ModifyXml

 2006-08-07 05:12:58,359 [main] DEBUG niu.xml.ModifyXml - 修改XML檔案成功

 2006-08-07 05:13:01,125 [main] DEBUG niu.xml.ModifyXml - 開始調試ModifyXml

 2006-08-07 05:13:01,156 [main] DEBUG niu.xml.ModifyXml - 修改XML檔案成功

 2006-08-07 05:22:28,109 [main] DEBUG niu.xml.ModifyXml - 開始調試ModifyXml

 2006-08-07 05:22:28,359 [main] DEBUG niu.xml.ModifyXml - 修改XML檔案成功

使用log4j的原始碼:

package niu.xml;

 

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import org.apache.log4j.Logger;

import org.apache.log4j.PropertyConfigurator;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.SAXReader;

import org.dom4j.io.XMLWriter;

import org.eclipse.swt.events.SelectionEvent;

import org.eclipse.swt.events.SelectionListener;

 

/**

 * @author YongJie

 *

 */

public class FormatXml implements SelectionListener

{

 

       static Logger logger = Logger.getLogger(FormatXml.class);

       public void widgetSelected(SelectionEvent arg0)

       {

              // NIU_TODO 自動產生方法存根

              PropertyConfigurator.configure("./config/log4j.properties");

              logger.debug("開始調試FormatXml");

              SAXReader reader=new SAXReader();

              Document document=null;

              try

              {

                     document=reader.read(new File("test.xml"));

                     logger.debug("讀取源檔案到對象document");

                     OutputFormat format=OutputFormat.createPrettyPrint();

                    

                     format.setEncoding("GB2312");

                     logger.debug("設定字元編碼為GB2312");

                     try

                     {

                            XMLWriter writer=

new XMLWriter(new FileWriter("testformat.xml"),format);

                            writer.write(document);

                            writer.close();

                            logger.debug("格式檔案寫入成功");

                     } catch (IOException e)

                     {

                            // NIU_TODO 自動產生 catch 塊

                            logger.debug("格式檔案寫入失敗");

                            e.printStackTrace();

                           

                     }

                    

                    

              } catch (DocumentException e)

              {

                     // NIU_TODO 自動產生 catch 塊

                     logger.debug("讀取源檔案失敗");

                     e.printStackTrace();

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.