Java 如何禁用记录调用路径
我想禁用log4j中记录所有被调用的类/方法路径的部分。例如Java 如何禁用记录调用路径,java,log4j,Java,Log4j,我想禁用log4j中记录所有被调用的类/方法路径的部分。例如 Apr 15, 2013 10:50:52 AM com.production.tasks.ImportNewOrders checkForOrders INFO: ------- Order #295510 Hibernate: select asset0_.id as id0_, asset0_.AssetID as AssetID0_, asset0_.barcode as barcode0_, asset0_.filename
Apr 15, 2013 10:50:52 AM com.production.tasks.ImportNewOrders checkForOrders
INFO: ------- Order #295510
Hibernate: select asset0_.id as id0_, asset0_.AssetID as AssetID0_, asset0_.barcode as barcode0_, asset0_.filename as filename0_, asset0_.orderID as orderID0_, asset0_.Priority as Priority0_, asset0_.qty as qty0_, asset0_.Status as Status0_, asset0_.TimeStamp_Received as TimeStamp9_0_, asset0_.type as type0_, asset0_.URL_Thumb as URL11_0_, asset0_.vendor as vendor0_ from production_queue.3D_Mgmt_v1_Assets asset0_ where asset0_.AssetID=?
Apr 15, 2013 10:51:04 AM com.production.utility.File download
INFO: - DecoFile downloaded from https://secure-url/165054548?user[id]=xxxxx&key=xxxx to th_1107461838.png
Apr 15, 2013 10:51:17 AM com.production.utility.File download
INFO: - DecoFile downloaded from https://secure-url/165054548?user[id]=xxxxx&key=xxxx to 1107461838.png
Hibernate: insert into production_queue.3D_Mgmt_v1_Assets (AssetID, barcode, filename, orderID, Priority, qty, Status, TimeStamp_Received, type, URL_Thumb, vendor) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Apr 15, 2013 10:51:17 AM com.production.tasks.ImportNewOrders checkForOrders
我想成为
INFO: ------- Order #295510
Hibernate: select asset0_.id as id0_, asset0_.AssetID as AssetID0_, asset0_.barcode as barcode0_, asset0_.filename as filename0_, asset0_.orderID as orderID0_, asset0_.Priority as Priority0_, asset0_.qty as qty0_, asset0_.Status as Status0_, asset0_.TimeStamp_Received as TimeStamp9_0_, asset0_.type as type0_, asset0_.URL_Thumb as URL11_0_, asset0_.vendor as vendor0_ from production_queue.3D_Mgmt_v1_Assets asset0_ where asset0_.AssetID=?
INFO: - DecoFile downloaded from https://secure-url/165054548?user[id]=xxxxx&key=xxxx to th_1107461838.png
INFO: - DecoFile downloaded from https://secure-url/165054548?user[id]=xxxxx&key=xxxx to 1107461838.png
Hibernate: insert into production_queue.3D_Mgmt_v1_Assets (AssetID, barcode, filename, orderID, Priority, qty, Status, TimeStamp_Received, type, URL_Thumb, vendor) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
目前我还没有配置log4j属性文件。我想保持发送到stdout的信息的原样,但要避免这些方法调用日志 更新 我已经创建了一个
log4j.properties
文件,但是我找不到任何设置来禁用方法调用的日志记录
注;我并没有试图更改日志消息的“格式”,而是完全禁用方法调用的日志记录
log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c:%L - %m%n
#prevent "no appenders" warning despite having appenders - http://stackoverflow.com/a/15912258/197606
log4j.category.org.jboss.logging=INFO, stdout
#log4j.category.org.springframework=DEBUG,stdout
log4j.category.com.model.entity =DEBUG,stdout
如果使用配置Appender,则应删除输出具有完全限定名称的调用方法的%l
。您的布局应如下所示:
PatternLayout layout = new PatternLayout("%-5p %m");//Level and Message
但我建议加上某种时间戳,上面写着:
%d{dd MMM yyyy HH:mm:ss,SSS}
如果您没有在外部设置log4j属性文件,则应用程序中的某些组件正在以编程方式对其进行配置。在任何情况下,您都需要用您真正想要的内容覆盖您现在拥有的任何当前配置。实现这一点的最简单和最易管理的方法是创建一个有效的属性文件并将其放置在类路径中。这样做不仅可以覆盖现有记录器的配置,还可以定义新的记录器
如果需要,还可以通过编程方式修改Log4J配置。通过启动类中的静态初始值设定项实现。简单的例子:
public class LogTest {
private static final Logger logger = Logger.getLogger(LogTest.class);
static {
Logger.getRootLogger().getLoggerRepository().resetConfiguration();
ConsoleAppender console = new ConsoleAppender();
console.setLayout(new PatternLayout("%-5p %m%n"));
console.setThreshold(Level.TRACE);
console.activateOptions();
Logger.getRootLogger().addAppender(console);
}
@Test
public void testLogging() throws Exception {
logger.info("I am a simplistic info log message");
logger.error("I am a simplistic error log message",
new IllegalArgumentException());
}
}
这些不是log4j调用。您看到的是默认的java.util.logging模式(到stderr)。因此,您需要适当地配置java.util.logging。请参见如何设置appender?如果不使用属性文件,请显示配置代码。2013年4月15日上午10:50:52 com.production.tasks.ImportNewOrders checkForOrders条目的日志记录级别是多少?信息?调试?@Piotrkochanski这正是我想要摆脱的路线。它似乎不受日志记录级别的影响。您使用的是什么应用程序服务器?“目前我还没有配置log4j属性文件。”为什么不?想定义一个吗?然后您可以轻松地调整日志格式…谢谢,关于如何实现这一点有什么建议吗?对我来说,这就完成了:
System.setProperty(“java.util.logging.SimpleFormatter.format”,“%4$s:%5$s%n”)代码>