Tag: log4j

获取从中触发SQL查询的包的名称?

我在webapp中使用jdbcdslog和log4j日志引擎。 我能够记录执行的SQL查询。 我想知道如何获取从中触发查询的包的名称。 这样我就可以分离出日志信息,并通过查看日志知道查询的位置,而不是通过代码。 我尝试使用Log4j的PatternLayout中的%C参数来获取此处提到的包名称 但我得到的输出是 2013-07-30-main–INFO -org.jdbcdslog.StatementLogger:java.sql.Statement.executeQuery: SELECT id, first, last, age FROM Employees; 如您所见,记录了SQL查询,但它给出的类是org.jdbcdslog.StatementLogger。 这不是我们想要的,因为我想从查询被激活的类的名称。 我在Log4j.properties文件中使用以下设置 log4j.appender.S.layout.ConversionPattern=%d{yyyy-MM-dd}-%t-%x-%-5p-%C:%m%n 这是因为jdbcdslog包装了与JDBC驱动程序的连接。 我想知道如何获取触发查询的类的名称。

Log4j在集群环境中

我正在将log4j用于在集群环境中运行的Web应用程序。 在少数情况下,某些进程(非特定)的日志记录丢失。 我无法确定原因。 在单个服务器实例上运行时,它可以正常工作。 我正在使用每日滚动文件appender。 是否要添加/修改任何其他属性? Async Appender会有帮助吗? 对此有何解决方案? 编辑:以下是log4j XML以及我计划使用的AsyncAppender

如何在log4j2属性中设置类的日志级别

在log4j中我可以在属性文件中指定一个类来记录调试级别,如下所示: log4j.logger.com.mycompany.mypackage.ClassName=DEBUG 我如何在log4j2中执行此操作? 注意我仍然需要使用新的属性文件(不是xml或json)。 TIA

两个不同的appender使用相同的日志文件是否安全

log4j.rootLogger=error,network log4j.appender.defaultLog=org.apache.log4j.ConsoleAppender log4j.appender.defaultLog.DatePattern=${roll.pattern.daily} log4j.appender.defaultLog.file=/var/log/tomcat7/hello.log log4j.appender.defaultLog.layout=org.apache.log4j.PatternLayout log4j.appender.defaultLog.layout.ConversionPattern=${log.format} log4j.logger.timing=info, timing log4j.appender.timing=org.apache.log4j.ConsoleAppender log4j.appender.timing.DatePattern=${roll.pattern.daily} log4j.appender.timing.file=/var/log/tomcat7/hello.log log4j.appender.timing.layout=org.apache.log4j.PatternLayout log4j.appender.timing.layout.ConversionPattern=${log.format} 我想要实现的是级别ERROR中的日志网络和级别INFO中的时间。 我可以做我在那里描述的吗? 或者它会导致两个处理器尝试访问同一文件时出现任何问题。 是否有任何更简单的方法来指定另一个定义两个不同的appender。

新项目使用log4j而不是Logback的任何原因?

我知道常见的意思是Logback> log4j。 仍然,有什么log4j比Logback更好吗? 有什么理由使用log4j而不是logback? 事实上它只有60个关于堆栈溢出的问题,所以我假设一个小得多的用户群?

执行mapreduce程序时ClassNotFoundException

我试图在eclipse中执行word count程序。 但在执行程序时,我收到以下错误 log4j:ERROR Could not instantiate class [org.apache.hadoop.log.metrics.EventCounter]. java.lang.ClassNotFoundException: org.apache.hadoop.log.metrics.EventCounter at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:190) at org.apache.log4j.helpers.Loader.loadClass(Loader.java:198) at org.apache.log4j.helpers.OptionConverter.instantiateByClassName(OptionConverter.java:327) at org.apache.log4j.helpers.OptionConverter.instantiateByKey(OptionConverter.java:124) at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:785) at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768) at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648) at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514) at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580) at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526) at org.apache.log4j.LogManager.(LogManager.java:127) at org.apache.log4j.Logger.getLogger(Logger.java:104) at org.apache.commons.logging.impl.Log4JLogger.getLogger(Log4JLogger.java:289) […]

log4j2的性能与log4j1相比

我正在尝试将我的应用程序迁移到使用log4j2。 它目前使用的是log4j 1.2.16。 我的项目也有性能构建,升级到log4j 2后,性能似乎有了很大提高。 也就是说,直到我读到有关桥接的内容。 根据文档,我必须从类路径中排除log4j1 JAR,并包括桥接JAR – 我假设它被命名为’org.apache.logging.log4j:log4j-1.2-api’。 一旦我这样做,性能再次下降。 总结一下: 性能与log4j2 +桥接jar + log4j-1.2-api + log4j1:好 使用log4j2 +桥接jar + log4j-1.2-api的性能:糟糕(以至于它降回到log4j1的性能) 我已经检查过log4j-1.2-api是否在类路径中较早。 所以它应该先加载。 知道什么可能导致这个问题吗? 非常感谢你提前! 哦,我完整的日志记录是: org.slf4j:SLF4J的API org.slf4j:log4j的环比SLF4J org.slf4j:JCL-过SLF4J org.apache.logging.log4j:log4j的-SLF4J-IMPL org.apache.logging.log4j:log4j的核心 org.apache.logging.log4j:log4j的-API org.apache.logging.log4j:log4j的-1.2-API log4j:log4j(有和没有,如上所述) 版本: Log4j2:2.6.2 slf4j:1.7.20 log4j1:1.2.16 我的配置文件如下: log4j2-xinclude-appenders.xml如下所示: %d|%X{active.profiles}| %-5p |%X{fcp.session}|%X{StateMachine.key}|%X{StateMachine.currentState}| %m | %t | %c{1.}%n 编辑:这是包含在类路径中的log4j 1 xml文件 编辑2 :性能不佳的类路径顺序: log4j-1.2-api-2.6.2.jar […]

如何在log4j2中创建滚动文件appender插件

我想创建一个自定义log4j2滚动文件appender。 我需要创建这个自定义appender,因为我想用我的应用程序特有的一些信息包装log4j日志事件。 例如userId,托管的应用程序名称。 我有一个扩展Log4jLogEvent实现LogEvent的类。 这个类包含了我需要用日志事件包装的信息。 请看这段代码: public class CustomLogEvent extends Log4jLogEvent implements LogEvent { private String userId; private String applicationName; private static final long serialVersionUID = 1L; public CustomLogEvent(String loggerName, Marker marker, String loggerFQCN, Level level, Message message, Throwable t, Map mdc, ThreadContext.ContextStack ndc, String threadName, StackTraceElement location, long timestamp){ super(loggerName,marker,loggerFQCN,level,message,t,mdc,ndc,threadName,location,timestamp); } //Getters and setters […]

Hibernate-4显示生成的SQL代码

我在我的eclipse IDE中创建了一个Maven项目,并尝试编写简单的hibernate程序。 但我无法看到由hibernate生成的最终查询,其中还包括绑定参数。 我也按照这里提到的post: Hibernate显示真正的SQL ,但它没有帮助。 我有以下配置: 在我的hibernate.cfg.xml文件中,我有: true true true 我还将log4j.properties文件及其内容放在: log4j.logger.org.hibernate=INFO, hb log4j.logger.org.hibernate.SQL=DEBUG log4j.logger.org.hibernate.type=TRACE log4j.logger.org.hibernate.hql.ast.AST=info log4j.logger.org.hibernate.tool.hbm2ddl=warn log4j.logger.org.hibernate.hql=debug log4j.logger.org.hibernate.cache=info log4j.logger.org.hibernate.jdbc=debug log4j.logger.net.sf.hibernate.type=debug log4j.appender.hb=org.apache.log4j.ConsoleAppender log4j.appender.hb.layout=org.apache.log4j.PatternLayout log4j.appender.hb.layout.ConversionPattern=HibernateLog –> %d{HH:mm:ss} %-5p %c – %m%n log4j.appender.hb.Threshold=TRACE hibernate.cfg.xml和log4j.properties都放在路径中: MyProject/src/main/java/log4j.properties 但是当我运行一个小程序时,我无法看到由hibernate添加的绑定参数,我只是看到下面的结果: Hibernate: select this_.ID as ID1_0_0_, this_.NAME as NAME2_0_0_ from MY_TABLE this_ 我正在使用Hibernate-4.3

使用LogBack登录数据库

使用log4j,我曾经有一个直接记录到我的数据库中的一个表的appender。 appender如下: log4j是部署在JBoss 4.2上的Web应用程序的一部分。 log4j的问题在于它没有关闭它打开的数据库连接,甚至当我们在Web服务器上尝试Postgres数据源时,它正在耗尽池中的所有连接(这是一个完全不同的问题)。 这就是为什么我们决定尝试LogBack,看看它是否更好。 有趣的是,当我阅读LogBack文档时,它清楚地提到了以下内容: DBAppender以独立于Java编程语言的格式将日志记录事件插入到三个数据库表中。 这三个表是logging_event,logging_event_property和logging_event_exception。 它们必须存在才能使用DBAppender。 据我所知,这意味着我已经绑定了这3个表来登录数据库。 在互联网上搜索解决方案产生的结果很少涉及扩展AppenderBase类,这对我来说在这个阶段是不方便的,因为这意味着必须进行更多的测试,因为我们知道我们有很多其他要求进行测试。 问题是:我可以为LogBack定义一个与我上面的log4j appenderfunction类似的appender吗? 非常感谢您的帮助。