gpt4 book ai didi

java - Log4J 无法正常工作?

转载 作者:行者123 更新时间:2023-12-02 19:36:39 25 4
gpt4 key购买 nike

我是 Log4J 新手。我正在尝试让这个记录器工作。我下载了 .JAR 文件,并将其构建到引用库中,可以打开该文件夹并在其中查看它。所以我认为它已内置到我的项目中。

我认为我缺少如何声明记录器,以便我可以在下面使用它。我从 stackoverflow 获得的一些代码。

问题:我缺少 Log4J 声明的哪一部分,以便在我的简单示例中将其用作记录器?

代码:

import java.io.*;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class TestLogs {
private static Logger logger = Logger.getLogger(FileChooserDemo.class.getName());

FileHandler fh;

public TestLogs() {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
fh = new FileHandler("C:\\Users\\itpr13266\\Desktop\\MyNewLogFile.log");
logger.addHandler(fh);
logger.info("Logging an INFO-level message");
logger.warning("Your file cannot be written!!");
} catch (Exception ex) {
Logger.getLogger(FileChooserDemo.class.getName()).log(Level.SEVERE, null, ex);
}
}

private void LogTester() {
Logger.getRootLogger().getLoggerRepository().resetConfiguration();
ConsoleAppender console = new ConsoleAppender(); //create appender
//configure the appender
String PATTERN = "%d [%p|%c|%C{1}] %m%n";
console.setLayout(new PatternLayout(PATTERN));
console.setThreshold(Level.FATAL);
console.activateOptions();
//add appender to any Logger (here is root)
Logger.getRootLogger().addAppender(console);

FileAppender fa = new FileAppender();
fa.setName("FileLogger");
fa.setFile("mylog.log");
fa.setLayout(new PatternLayout("%d %-5p [%c{1}] %m%n"));
fa.setThreshold(Level.DEBUG);
fa.setAppend(true);
fa.activateOptions();

//add appender to any Logger (here is root)
Logger.getRootLogger().addAppender(fa)
}

public static void main(String[] args) {
TestLogs tls = new TestLogs();
tls.LogTester();
}
}

enter image description here

新图像 - 我重建了路径,并将它们放在文件结构中略有不同的位置。但错误仍然存​​在。

enter image description here

有效的代码 --- 但如何将其记录到计算机上的文本文件中。

package TestMenu;

import org.apache.log4j.*;

import javax.swing.*;

public class TestLogs {
private static Logger logger = Logger.getLogger(TestLogs.class.getName());

public TestLogs() {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception ex) {
}
}

private void LogTester() {
logger.info("It works");
TestLogs tls = new TestLogs();
}

public static void main(String[] args) {
TestLogs tls = new TestLogs();
tls.LogTester();
}
}

至少 log4j 正在工作,但如何更改属性文件,以便我可以记录所有警告、信息并记录到文件而不是控制台?

Log4j 属性:

# Root logger option
log4j.rootLogger=INFO, stdout

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

新图像 - 不工作 - 错误显示在底部

enter image description here

enter image description here

错误:

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

enter image description here

最佳答案

您正在尝试使用 java util 日志记录而不是 log4j。您需要导入

import org.apache.log4j.Logger;

我发现您的代码中存在错误的另一件事是

更改此:

private static Logger logger = Logger.getLogger(FileChooserDemo.class.getName());

private static Logger logger = Logger.getLogger(TestLogs.class.getName());

这是一个示例

package com.vkg;

import org.apache.log4j.Logger;

public class TestLogs {
private static Logger logger = Logger.getLogger(TestLogs.class.getName());

public static void main(String[] args) {
logger.info("It works");
TestLogs tls = new TestLogs();
}
}

基本的 log4j 配置文件

  # Root logger 
log4j.rootLogger=INFO, file, stdout

# Write to file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=[sompath to your log file e.g. C:\\mylog.log]
log4j.appender.file.MaxFileSize=50MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Write to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

和输出

2014-05-12 13:18:01 INFO  TestLogs:9 - It works

下图显示了 log4j.properties 的保存位置

enter image description here

关于java - Log4J 无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23614191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com