我已经创建了示例log4j类来测试配置。我编写了以下Log4J属性文件:
log4j.rootLogger = INFO, FILE, CONSOLE
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=X:\\logs\Log4jExample.log
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
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
我的示例程序是:
public class Log4jExample
{
static Logger log = Logger.getLogger(Log4jExample.class.getName());
public static void main(String[] args) throws IOException {
try {
FileInputStream fstream = new FileInputStream("D:\\textfile.txt");
// use DataInputStream to read binary NOT text
// DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine;
while ((strLine = br.readLine()) != null) {
System.out.println (strLine);
}
in.close();
} catch (FileNotFoundException fe) {
log.error("File Not Found",fe);
log.warn("This is a warning message");
log.trace("This message will not be logged since log level is set as DEBUG");
} catch (IOException e) {
log.error("IOEXception occured:", e);
}
}
}
我在控制台中收到了预期的输出,但我无法找到生成的日志文件。我已将其路径设置为X:\\logs
。但是没有创建这样的日志文件。
请帮忙。
答案 0 :(得分:1)
您的路径在某些地方有双反斜杠,在其他地方有单反斜杠。你能用全单(或全双)反斜杠再试一次吗? 另一个尝试是首先登录到本地驱动器(C :),以查看问题是否与映射的网络驱动器有关。
(顺便说一下,问题是标记为log4j2,但你使用的是log4j-1.x)
答案 1 :(得分:0)
我的配置中没有任何错误 但是在你的初衷中,试试这个:
static final Logger LOGGER = LoggerFactory.getLogger(MyClass.class)
答案 2 :(得分:0)
将X:\\logs\test.log
更改为X://logs/test.log
路径
通常人们倾向于给出相对路径,如log/MutationPipeline.log
答案 3 :(得分:0)
X:映射网络驱动器?我记得在某些时候在Windows上从Java写入映射的网络驱动器时遇到了麻烦。这可能是由此问题引起的:Windows file share: why sometimes newly created files aren't visible for some period of time?
您是否可以尝试使用C:/temp
之类的本地驱动器来验证您是否可以在那里看到日志文件?那会缩小它......