簡體   English   中英

在Netbeans中使用Log4J

[英]Using Log4J In Netbeans

我試圖在Netbeans中使用Log4J,但是我很難理解這些教程。 他們中的許多人都說“做到這一點”,並假設我知道他們在說什么。 我不。 如果可以的話,我想逐步說明如何在哪里找到適合Log4J的正確庫,將它們放在項目中的位置以及使用Log4J的示例程序。

log4j 2.x

與下面類似,但文件名的名稱必須為log4j2.properties (另請注意,log4j.properties配置的舊示例實際上似乎沒有在Log4j 2中執行任何有用的操作,因此請確保從專用於Log4j 2的教程中復制初始配置,而不是舊版v1。)

謝謝@bobulous

log4j 1.x

如果你得到log4j:WARN No appenders could be found for logger消息的log4j:WARN No appenders could be found for logger ,那么很可能你沒有在項目中包含log4j.properties文件。 這是您應如何將其包括在NetBeans中的屏幕截圖。

log4j.properties NetBeans

http://www.tutorialspoint.com/log4j/log4j_sample_program.htm -

從這里下載jar: https//logging.apache.org/log4j/1.2/download.html

在您的路徑中添加此文件:

log4j.properties

# Define the root logger with appender file
log = /usr/home/log4j
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender

# Here is the location output of the file!
log4j.appender.FILE.File=${log}/log.out

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

然后運行:

log4jExample.java

import org.apache.log4j.Logger;

import java.io.*;
import java.sql.SQLException;
import java.util.*;

public class log4jExample{
  /* Get actual class name to be printed on */
  static Logger log = Logger.getLogger(
                      log4jExample.class.getName());

  public static void main(String[] args)
                throws IOException,SQLException{

     log.debug("Hello this is an debug message");
     log.info("Hello this is an info message");
  }
}

這個非常全面的log4j2工作示例幾乎包含所有內容,此處重復包含鏈接中斷

要獲得一個有用的示例,請在netbeans(或任何IDE)中創建一個新的maven java應用程序

新項目 - > Maven - > Java應用程序

在你的新maven項目中,netbeans中的'project files'下有一個pom.xml ,你需要添加這個依賴:

我使用log4j 2.11.1版進行了測試,請在此處查看最新版本

   ... 
   </properties>
   <dependencies>
       <dependency>
           <groupId>org.apache.logging.log4j</groupId>
           <artifactId>log4j-core</artifactId>
           <version>2.11.1</version>
       </dependency>
   </dependencies>
</project>

創建一個src / main / resources / log4j2.properties (此確切路徑和名稱是必需的)

您可以稍后使用作為參考自定義打印布局

status = error
name = PropertiesConfig

filters = threshold
filter.threshold.type = ThresholdFilter
filter.threshold.level = debug

appenders = console
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT

創建一個新類: Log4j2HelloWorldExample.java

package com.howtodoinjava.log4j2.examples;   

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;


public class Log4j2HelloWorldExample {

    private static final Logger LOGGER = LogManager.getLogger(Log4j2HelloWorldExample.class.getName());

    public static void main(String[] args) {
        LOGGER.debug("Debug Message Logged !!!");
        LOGGER.info("Info Message Logged !!!");
        LOGGER.error("Error Message Logged !!!", new NullPointerException("NullError"));
    }
}

當您運行該類時,您將得到他的輸出

 2016-06-16 13:41:27 DEBUG Log4j2HelloWorldExample:12 - Debug Message Logged !!!
 2016-06-16 13:41:27 INFO  Log4j2HelloWorldExample:13 - Info Message Logged !!!
 2016-06-16 13:41:27 ERROR Log4j2HelloWorldExample:14 - Error Message Logged !!!
 java.lang.NullPointerException: NullError
     at com.howtodoinjava.log4j2.examples.Log4j2HelloWorldExample.main(Log4j2HelloWorldExample.java:14)
    [classes/:?]

如果上面的示例是單獨運行的,但是將其集成到項目中時並非如此,則可能存在一些依賴項干擾

運行mvn dependency:tree並排除所有干擾log4j依賴,我需要排除這些:

<exclusion>
    <!-- 
        [INFO] |  +- log4j:log4j:jar:1.2.17:compile
        [INFO] |  +- org.slf4j:slf4j-log4j12:jar:1.7.16:compile
    -->
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
</exclusion>
<exclusion>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
</exclusion>

為了將現有的slf4j代碼橋接到我新添加的log4j2中,我必須包括在這里找到的這種依賴關系

   <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
      <version>2.9.0</version>
   </dependency>

我仍然看到這個:

log4j:WARN No appenders could be found for logger
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

我還需要確保log4j2.property文件具有我的操作系統特定行結尾,我使用Cygwin創建屬性文件並從Windows運行netbeans並且由於屬性文件全部被Windows讀取為單行而無法找到appender

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM