标签: slf4j

开始Hibernate 3.5 - ant任务的问题

我正在努力完成"Beginning Hibernate 3.5",我遇到了一个初步障碍.

当我运行时ant exportDDL,我收到以下错误:

exportDDL:
   [htools] Executing Hibernate Tool with a Hibernate Annotation/EJB3 Configuration
   [htools] 1. task: hbm2ddl (Generates database schema)
   [htools] SLF4J: The requested version 1.6 by your slf4j binding is not compatible with [1.5.5, 1.5.6, 1.5.7, 1.5.8]
   [htools] SLF4J: See http://www.slf4j.org/codes.html#version_mismatch for further details.
   [htools] An exception occurred while running exporter #2:hbm2ddl (Generates database schema)
   [htools] To get the full stack trace run ant with -verbose
   [htools] Problems in creating a AnnotationConfiguration. Have you remembered …
Run Code Online (Sandbox Code Playgroud)

java ant hibernate slf4j

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

在Linux Tomcat 7上安装我的webapp的日志文件?

我目前使用Eclipse和本地Tomcat 7服务器开发一个简单的Web应用程序.我配置了Eclipse,所以我可以从我的IDE中启动Tomcat 7 - 这里没什么了不起的.

在我的网络应用程序中,我使用SLF4J和Logback,在服务类中看起来像这样:

public class MyServiceImpl implements MyService
{
  private static Logger logger = LoggerFactory.getLogger( MyServiceImpl.class );

  public void doSomeStuff()
  {
      logger.info( "Doing some stuff" );
  }
}
Run Code Online (Sandbox Code Playgroud)

我的日志记录是这样配置的:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>log/MyTestWebApp.%d.log.zip</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="com.test" level="WARN" />

    <root level="WARN">
        <appender-ref ref="fileAppender" />
    </root>

</configuration>
Run Code Online (Sandbox Code Playgroud)

当我启动我的Web应用程序以及本地Tomcat 7服务器时,日志输出将转到

./log/MyTestWebApp.log
Run Code Online (Sandbox Code Playgroud)

正如所料,当前目录是我的Web应用程序所在的目录(例如,我的Maven pom.xml所在的目录).

当我在远程linux机器上启动我的Web应用程序时,我找不到任何"MyTestWebApp.log"文件,不是在我的web应用程序的directoy中,也不是在Tomcat7-root目录中.

所以我的简单问题是,这些日志分别在哪里,我的"MyTestWebApp.log"文件在哪里?

非常感谢你的帮助!

logging tomcat logback slf4j logfile

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

Grails:用logback替换log4j

我试图用我的Grails应用程序替换log4j并使用logback,但我总是得到一个

Embedded error: java.lang.reflect.InvocationTargetException
org.apache.log4j.LogManager
Run Code Online (Sandbox Code Playgroud)

在运行run-apptest-app时.

我在BuildConfig.groovy中包含了以下内容,我认为这就足够了:

inherits("global") {
    excludes "slf4j-log4j12"
}

[...]

dependencies {
    build 'ch.qos.logback:logback-core:0.9.29', 'ch.qos.logback:logback-classic:0.9.29'
    runtime 'ch.qos.logback:logback-core:0.9.29', 'ch.qos.logback:logback-classic:0.9.29'
}
Run Code Online (Sandbox Code Playgroud)

我找不到更多对Log4J的引用,也不知道这个调用来自哪里?!

我也尝试用1.6.2替换Grails slf 1.5.8并在控制台中获得以下内容尽管已从所有Grails模块中排除了slf:

SLF4J: The requested version 1.6 by your slf4j binding is not compatible with [1.5.5, 1.5.6, 1.5.7, 1.5.8]
SLF4J: See http://www.slf4j.org/codes.html#version_mismatch for further details.
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助

问候

乔纳斯

grails logging log4j slf4j

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

用于登录文件的Android最佳记录器

什么是最好的记录器框架,在Android系统中完美地用于将文本记录到文件中?

我尝试使用SLF4J-android,但我得到了一个例外

04-29 12:58:57.604: E/AndroidRuntime(372): java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

public class Main extends TabActivity {
    private static final Logger log = LoggerFactory.getLogger(Main.class); 
Run Code Online (Sandbox Code Playgroud)

我将slf4j-android-1.6.1-RC1.jar添加到构建路径中

会有什么问题?

logging android noclassdeffounderror slf4j

5
推荐指数
2
解决办法
8846
查看次数

Log4J 1.2和Log4J 2.0之间有什么重大差异吗?

我很好奇Log4J 1.2和2.0之间的差异,因为我一直在尝试运行我在网上发现的一个演示(这里是视频),我遇到了问题.我对SLF4J在所有这些方面的作用特别感到好奇,即你需要一个特定的SLF4J来支持1.2和2.0吗?

谢谢!

configuration log4j slf4j

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

JUL(Java.util.Logging)的MDC(映射诊断上下文)支持

我有一个使用Slf4j和java.util.Logging设置的日志记录机制.我有几个线程,所以我无法从日志中得到一个清晰的想法,因为它们是混合的.现在我尝试使用MDC概念在日志文件中添加更多数据,以便它们清晰.

问题与Slf4j中的一样,虽然它支持MDC java.util.Logging不支持.但它说

如果底层框架不提供MDC,例如java.util.logging,则SLF4J仍将存储MDC数据,但其中的信息需要由自定义用户代码检索.

我正在尝试找到一种方法来执行此自定义代码.谷歌搜索对我没什么帮助.Slf4j中有一个名为"BasicMDCAdapter"的辅助类.但我不知道如何使用它.我无法在任何地方找到示例代码.

也是一个有助于此的代码,但仍然没有给出一些描述.

我很感激这里的帮助.

谢谢.

java slf4j java.util.logging mdc

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

如何使用Log4J从SLF4J获取除root记录器以外的其他记录器

我在Spring学习Slf4j和log4j.我已经看到了我们使用一行的eyery

private final Logger logger = LoggerFactory.getLogger(name.class);
Run Code Online (Sandbox Code Playgroud)

我已经看到这是默认情况下获取root logger.

  1. 如何获得root logger?我错了吗?

  2. 如何获取log4j.xml文件中定义的其他记录器?

这是我的配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC
  "-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
    debug="false">

    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %5p %c{2}: %m%n" />
        </layout>
    </appender>

    <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </appender>

    <appender name="FILE" class="org.apache.log4j.RollingFileAppender">

        <param name="File" value="C:/log/spring-hib.log" />
        <param name="MaxBackupIndex" value="100" />

        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %5p %c{2}: %m%n" />
        </layout>


    </appender>

  <logger name="com.example.foo">
  <level value="DEBUG"/> …
Run Code Online (Sandbox Code Playgroud)

java slf4j log4

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

与Spock嘲笑slf4j

我有一个带注释的Groovy类@Slf4j,所以它得到一个私有的final Logger log字段,我想测试它的用法.我想继续使用@Slf4j并且不再公开该log字段以便进行测试.

我正在使用Spock 1.0编写测试,并尝试使用Spock的集成模拟和存根功能来完成此操作.全局存根应该帮助我拦截LoggerFactory调用以获取实际Logger实例,所以我目前的猜测是这样的:

LoggerFactory logFactory = GroovyStub(global: true)
logFactory.getLogger(_) >> Mock(Logger)
// create my @Slf4j-annotated object afterwards
Run Code Online (Sandbox Code Playgroud)

有趣的是,拦截实际上有效,println确认该类实际上获得了一个对象Mock for type 'Logger' named 'dummy',但是指示存根返回模拟的第二个语句似乎没有捕获.相反,默认存根行为返回另一个存根,当然不能用于模拟:

org.spockframework.runtime.InvalidSpecException: Stub 'dummy' matches the following required interaction:

1 * plugin.log.warn(_)   (0 invocations)

Remove the cardinality (e.g. '1 *'), or turn the stub into a mock.
Run Code Online (Sandbox Code Playgroud)

我需要更改什么才能让存根LoggerFactory返回模拟Logger

groovy mocking slf4j spock

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

如何在CompletableFuture中保留slf4j MDC日志记录上下文?

执行async时CompletableFuture,父线程org.slf4j.MDC上下文以及上下文会丢失。

这很不好,因为我使用某种“鱼标签”来跟踪多个日志文件中一个请求的日志。

MDC.put("fishid", randomId())

问题:一般情况下,我该如何保留该ID CompletableFutures

List<CompletableFuture<UpdateHotelAllotmentsRsp>> futures =
    tasks.stream()
        .map(task -> CompletableFuture.supplyAsync(
            () -> businesslogic(task))
        .collect(Collectors.toList());

List results = futures.stream()
    .map(CompletableFuture::join)
    .collect(Collectors.toList());

public void businesslogic(Task task) {
       LOGGER.info("mdc fishtag context is lost here");
}
Run Code Online (Sandbox Code Playgroud)

java slf4j mdc completable-future

5
推荐指数
2
解决办法
2668
查看次数

如何使用Spring Boot的应用程序日志(由slf4j生产)丰富Jaeger opentracing数据?

现有的Spring Boot应用程序正在使用SLF4J记录器。我决定通过opentracing使用Jaeger作为跟踪器的标准API 添加对分布式跟踪的支持。初始设置多么容易,真是太神奇了-所需要的只是在上添加两个依赖项pom.xml

    <dependency>
        <groupId>io.opentracing.contrib</groupId>
        <artifactId>opentracing-spring-web-autoconfigure</artifactId>
        <version>${io.opentracing.version}</version>
    </dependency>

    <dependency>
        <groupId>io.jaegertracing</groupId>
        <artifactId>jaeger-core</artifactId>
        <version>${jaegerVersion}</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

并为TracerBean提供配置:

@Bean
public io.opentracing.Tracer getTracer() throws ConfigurationException {
    return new new io.jaegertracing.Tracer.Builder("my-spring-boot-app").build();
}
Run Code Online (Sandbox Code Playgroud)

所有工作都像一个咒语-Jaeger处理应用程序请求并创建跨度:

在此处输入图片说明

但是,在跨度Logs中,只有preHandleafterCompletion事件包含在请求执行期间被调用的有关类/方法的信息(不slf4j收集由logger 生成的日志):

在此处输入图片说明

现在的问题是,如果它是可以配置示踪至拾取由应用记录仪(产生的日志slf4j在我的情况),使所有的应用程序日志进行经由:LOG.info/ LOG.warn/ LOG.error等将也反映在积

注意:我想出了如何通过API 手动记录跨度,opentracing例如:

Scope scope = tracer.scopeManager().active();
if (scope != null) {
    scope.span().log("...");
}
Run Code Online (Sandbox Code Playgroud)

并对标签进行一些手动操作,ERROR以便在过滤器中进行异常处理,例如

} catch(Exception ex) {
    Tags.ERROR.set(span, true); …
Run Code Online (Sandbox Code Playgroud)

logging slf4j spring-boot opentracing jaeger

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