标签: slf4j

如何在Hibernate 4中配置日志记录以使用SLF4J

Hibernate 3.x使用进行日志记录.Hibernate 4.x使用.我正在编写一个独立的应用程序,它使用Hibernate 4和SLF4J进行日志记录.

如何配置Hibernate以登录SLF4J?

如果那不可能,我怎么能配置Hibernate的日志记录呢?

关于日志记录的Hibernate 4.1手册部分首先警告它是......

完全过时了.Hibernate从4.0开始使用JBoss Logging.当我们将此内容迁移到开发人员指南时,这将记录在案.

......继续谈论SLF4J,所以没用.入门指南开发人员指南都没有谈论记录.迁移指南也没有.

我已经查找了有关jboss-logging本身的文档,但我根本找不到任何文档.在GitHub的页面是沉默的,和JBoss的社区项目页面甚至没有列出的jboss-记录.我想知道项目的bug跟踪器是否可能有任何与提供文档相关的问题,但事实并非如此.

好消息是,在应用程序服务器(如JBoss AS7)中使用Hibernate 4时,很大程度上会记录日志记录.但是我如何在独立应用程序中配置它?

logging hibernate slf4j hibernate-4.x jboss-logging

111
推荐指数
5
解决办法
5万
查看次数

记录框架不兼容

我正在构建一个小型Java应用程序,并希望使用logback进行日志记录.

我的应用程序依赖于通过其进行日志记录的旧项目

org.apache.commons | com.springsource.org.apache.commons.logging | 1.1.1
Run Code Online (Sandbox Code Playgroud)

......所以我的计划是使用

org.slf4j | jcl-over-slf4j | 1.5.6
Run Code Online (Sandbox Code Playgroud)

...将JCL日志记录重定向到

org.slf4j | slf4j-api | 1.6.0
Run Code Online (Sandbox Code Playgroud)

......最终到了

ch.qos.logback | logback-classic | 0.9.22
ch.qos.logback | logback-core | 0.9.22
Run Code Online (Sandbox Code Playgroud)

所以我的应用程序可以通过其slf4j API登录logback,而旧的库代码可以通过重定向登录到同一位置.

唉,这导致了

java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
at   org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:141)
Run Code Online (Sandbox Code Playgroud)

我已经在其中一些罐子上尝试过更高和更低的版本号,并且还通过API文档等进行挖掘...但我无法找到并解决问题.

请帮忙?

虽然logback被认为是"战略"日志框架,但我有一些余地,我最终使用哪种日志记录机制.我希望使用logback或log4j,我肯定希望通过常见配置将旧项目的日志记录合并到"新"日志框架最终的任何内容中.

java compatibility logback apache-commons slf4j

109
推荐指数
3
解决办法
11万
查看次数

SLF4J:无法加载类"org.slf4j.impl.StaticLoggerBinder".错误

  • 关于Eclipse IDE(Indigo,JunoKepler(32位和64位版本))
  • 平台:Windows,Ubuntu,Mac
  • M2E版本:1.1.0.20120530-0009,1.2.0.20120903-1050,1.3.0.20130129-0926,
    1.4.0.20130601-0317

基本信息

将m2e更新为1.1版后出现上述错误.通过删除m2e 1.1并回滚到m2e 1.0一切正常.我试图在Windows和Ubuntu中重复这个问题,它给了我完全相同的错误.测试了slf4j-api和logback的许多配置,但似乎都没有.

即使没有声明slf4j依赖项,错误也会出现在任何maven项目中.

  • New Maven项目 - > maven-archetype-quickstart

  • New Maven项目 - >没有原型选择的简单项目

    结果

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
Run Code Online (Sandbox Code Playgroud)

测试环境和配置

在Mac上使用Eclipse Indigo和Eclipse Juno(32位和64位)测试,在Ubuntu上测试32位,在Windows上测试64位和32位测试.测试了Juno Classic,Juno Modeling工具,Kepler Standard,Kepler Modeling Tools的全新安装并产生了同样的错误.

出现错误,包括清理,安装,测试,部署,生成源 …

eclipse logback slf4j m2eclipse maven

109
推荐指数
5
解决办法
15万
查看次数

是否值得将slf4j与log4j2一起使用

我无法决定是否使用slf4j与log4j2.基于在线帖子,看起来不会有任何性能影响,但它确实是必需的.

这些点也有利于log4j2:

  • SLF4J强制您的应用程序记录字符串.如果要记录文本,Log4j 2 API支持记录任何CharSequence,但也支持按原样记录任何Object.
  • Log4j 2 API支持记录Message对象,Java 8 lambda表达式和无垃圾日志记录(它避免了创建vararg数组并避免在记录CharSequence对象时创建字符串).

java logging log4j slf4j log4j2

99
推荐指数
2
解决办法
4万
查看次数

Java Logging框架中的标记是什么以及使用它们的原因是什么?

我第一次听到标记时读到:

http://slf4j.org/faq.html

我检查Logger对象的可用方法:

并找到接口:

我得到的更深入的信息:

但仍然困惑...请注意,我问为什么,而不是如何使用它们,所以这不是重复:

更新似乎在使用标记时,您还需要编写自定义Java代码,而不是在XML.property文件中进行配置...

更新2来自http://logback.qos.ch/manual/appenders.html#OnMarkerEvaluator

Marker notifyAdmin = MarkerFactory.getMarker("NOTIFY_ADMIN");
logger.error(notifyAdmin,
  "This is a serious an error requiring the admin's attention",
   new Exception("Just testing"));
Run Code Online (Sandbox Code Playgroud)

java logging log4j logback slf4j

95
推荐指数
1
解决办法
5万
查看次数

在slf4j中设置运行时消息的日志级别

使用log4j时,该Logger.log(Priority p, Object message)方法可用,可用于在运行时确定的日志级别记录消息.我们正在使用这个事实和这个技巧将stderr重定向到特定日志级别的记录器.

slf4j没有log()我能找到的通用方法.这是否意味着无法实现上述目标?

java logging log4j slf4j

91
推荐指数
10
解决办法
10万
查看次数

Logger slf4j使用{}而不是字符串连接格式化的优点

使用{}而不是字符串连接有什么好处吗?

来自slf4j的一个例子

logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);
Run Code Online (Sandbox Code Playgroud)

代替

logger.debug("Temperature set to"+ t + ". Old temperature was " + oldT);
Run Code Online (Sandbox Code Playgroud)

我认为这是关于速度优化的,因为根据配置文件,可以在运行时避免参数评估(和字符串连接).但是只有两个参数是可能的,那么有时除了字符串连接之外别无选择.需要就此问题提出意见.

optimization logging concatenation string-formatting slf4j

86
推荐指数
3
解决办法
8万
查看次数

如何将java.util.logging发送到log4j?

我有一个现有的应用程序,它针对log4j进行所有日志记录.我们使用了许多其他库,它们也使用log4j,或者记录Commons Logging,最终使用我们环境中的log4j.我们的一个依赖项甚至记录了slf4j,它也可以正常工作,因为它最终也会委托给log4j.

现在,我想为这个应用程序添加ehcache以满足一些缓存需求.以前版本的ehcache使用了commons-logging,它在这种情况下可以很好地工作,但是从版本1.6-beta1开始,它们已经删除了对commons-logging的依赖,而是用java.util.logging替换它.

不熟悉java.util.logging提供的内置JDK日志记录,是否有一种简单的方法可以将针对log4j发送到JUL的任何日志消息记录下来,因此我可以使用现有配置并设置任何日志记录来来自ehcache?

看看JUL的javadocs,看起来我可以设置一堆环境变量来改变使用的LogManager实现,也许可以用它来将log4j包装Logger在JUL Logger类中.这是正确的方法吗?

具有讽刺意味的是,当世界其他地方(大部分)使用第三方库时,图书馆使用内置JDK日志记录会引起如此头疼.

java logging log4j apache-commons slf4j

83
推荐指数
4
解决办法
6万
查看次数

使用Lombok的@ Slf4j和Intellij构建:找不到符号日志

我有一个maven项目,在命令行没有问题的情况下构建.但是,当我使用IntelliJ构建它时,我收到错误:

java: FileName.java:89: cannot find symbol
symbol  : variable log
Run Code Online (Sandbox Code Playgroud)

java文件中没有定义或导入日志,但有一个

@Slf4j
final public class FileName {
Run Code Online (Sandbox Code Playgroud)

应该定义日志类的类体之前的语句.

在项目结构窗口中,类为:

Maven: org.slf4j:jcl-over-slf4j:1.6.1
Maven: org.slf4j:slf4j-api:1.6.6
Maven: org.slf4j:slf4j-log4j12:1.6.6
Maven: org.slf4j:slf4j-simple:1.6.6
Run Code Online (Sandbox Code Playgroud)

列在库下,表示已下载并可用.

知道为什么这会通过命令行与maven一起构建,而不是通过IntelliJ以及如何解决问题?

intellij-idea slf4j lombok

81
推荐指数
12
解决办法
8万
查看次数

如何使用SLF4J使用占位符记录异常和消息

使用SLF4J记录错误消息和异常的正确方法是什么?

我试过这样做但是从不打印异常堆栈跟踪:

logger.error("Unable to parse data {}", inputMessage, e);

在这种情况下,我想填充{}inputMessage和退出异常堆栈跟踪.

我能看到这样做的唯一方法就是这样做:

logger.error("Unable to parse data " + inputMessage, e);

这不漂亮.

java logging slf4j

78
推荐指数
1
解决办法
4万
查看次数