Kil*_*awr 6 java console log4j
好的,所以我正在尝试创建一个内存appender(只是一个记录器,记录到ArrayList而不是控制台或文件),但是现在我想禁止它打印到控制台.
我到目前为止所读过的问题和网站(但我仍然无法弄明白)..
它具有我想要实现的所有细分,但我仍然有点困惑.
我还从Logback或Log4j Additivity Explained中读到了这个段.
但是,如果记录器X的aditivity标志设置为false或禁用,则调用x.debug()将仅记录到该文件.
所以在理论上我的log4j.properties档案
log4j.rootLogger=ERROR, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %5p %c (%F:%L) - %m%n
#hide the Log4jMemoryAppender from console
log4j.logger.nz.ac.massey.cs.sdc.log4jassignment.s06005586.MemoryAppender= ERROR, MEMORY_APPENDER
log4j.appender.MEMORY_APPENDER=nz.ac.massey.cs.sdc.log4jassignment.s06005586.MemoryAppender.Log4jMemoryAppender
log4j.additivity.rootLogger = false
log4j.additivity.console = false
log4j.additivity.MEMORY_APPENDER=false
Run Code Online (Sandbox Code Playgroud)
如果只打印***Hello World并排除其他任何从MEMORY_APPENDER,rootLogger和console.
package nz.ac.massey.cs.sdc.log4jassignment.s06005586.MemoryAppender;
import java.util.ArrayList;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class Log4jMemoryAppender extends AppenderSkeleton {
ArrayList<LoggingEvent> eventsList = new ArrayList();
public static void main (String [] args) {
PropertyConfigurator.configure("Lib/log4j.properties");
Log4jMemoryAppender app = new Log4jMemoryAppender();
Logger logger = Logger.getLogger(Log4jMemoryAppender.class);
logger.setLevel(Level.INFO);
logger.addAppender(app);
logger.info("Hello World");
logger.debug("Level DEBUG Is SET");
for (LoggingEvent le: app.eventsList) {
System.out.println("***" + le.getMessage());
}
}
@Override
protected void append(LoggingEvent event) {
eventsList.add(event);
}
public void close() {
}
public boolean requiresLayout() {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
但它不......
线路
MEMORY_APPENDER=false
Run Code Online (Sandbox Code Playgroud)
不起作用,您不能将附加程序设置为 false 值。
在你的情况下最好做这样的事情:
log4j.rootLogger=ERROR, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.logger.nz.ac.massey.cs.sdc.log4jassignment.s06005586.MemoryAppender = ERROR, MEMORY_APPENDER
log4j.additivity.nz.ac.massey.cs.sdc.log4jassignment.s06005586.MemoryAppender = false
Run Code Online (Sandbox Code Playgroud)
您的示例之一中使用的记录器是nz.ac.massey.cs.sdc.log4jassignment.s06005586.MemoryAppender,它应该映射到 中的记录器log4j.properties或仅映射到包部分(如 )nz.ac.massey.cs.sdc.log4jassignment。
看来你在这里混合了很多东西。是Log4jMemoryAppender你的MEMORY_APPENDER还是不是你的?
你为什么打电话来BasicConfigurator.configure()?你不想使用吗log4j.properties?
通常在课堂上,您可以这样做来获取记录器:
package com.mycompany;
public class MyClass {
private static final Logger log = Logger.getLogger(MyClass.class);
...
}
Run Code Online (Sandbox Code Playgroud)
记录器名称将是完全限定的类名com.mycompany.MyClass。
然后你可以有log4j.properties这样的:
log4j.rootLogger=ERROR, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.logger.com.mycompany=INFO, file
log4j.additivity.com.mycompany=false
logfj.appender.file = <some file appender>
Run Code Online (Sandbox Code Playgroud)
好吧,从头开始。一个非常简单的例子。
src/main/java/Log4JTest.java
package org.stackoverflow;
import org.apache.log4j.Logger;
/**
* @author maba, 2012-08-22
*/
public class Log4JTest {
public static final Logger log = Logger.getLogger(Log4JTest.class);
public static void main(String[] args) {
log.error("Error in main");
}
}
Run Code Online (Sandbox Code Playgroud)
src/main/resources/log4j.properties
log4j.rootLogger = ERROR, console
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
Run Code Online (Sandbox Code Playgroud)
现在编译并确保运行时它log4j.properties与您自己的类一起位于您的类路径中log4j.jar。
你会看到这个:
0 [main] ERROR org.stackoverflow.Log4JTest - Error in main
Run Code Online (Sandbox Code Playgroud)
从这里您可以尝试添加文件附加器或您自己的内存附加器。
| 归档时间: |
|
| 查看次数: |
18835 次 |
| 最近记录: |