标签: slf4j

如何配置slf4j能够写入控制台和文件?

目前我正在使用log4j,但许多Java技术使用slf4j(例如hibernate).我想配置log4j而不是slf4j.这是我的log4j文件:

log4j.rootLogger=trace, stdout, file

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.encoding=UTF-8
log4j.appender.stdout.target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.conversionPattern=%d{ABSOLUTE} %5p %t %c{1}:%M:%L - %m%n

log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.encoding=UTF-8
log4j.appender.file.append=false
log4j.appender.file.file=myproject.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.conversionPattern=%d{ABSOLUTE} %5p %t %c{1}:%M:%L - %m%n
Run Code Online (Sandbox Code Playgroud)

有人能给我看一个适合它的配置文件吗?PS如何从Servlets登录?因为他们在tomcat webapps的战争中.在这种情况下,他们在哪里写日志?

java logging slf4j

0
推荐指数
1
解决办法
5294
查看次数

如何解决此slf4j异常,找不到日志方法

我正在遵循SLF4J异常,我试图从pom.xml中删除slf4j依赖关系,但它仍然存在,有人可以帮忙吗?

抛出的异常为:。。

 " org.osgi.framework.BundleException: Exception in
 oracle.acs.assessment.PatchDataExtractionActivator.start() of bundle
 oracle.acs.mf.PatchDataExtractionBundle.
         at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:1018)
>         at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:974)
>         at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346)
>         at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:260)
>         at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:252)
>         at org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._start(FrameworkCommandProvider.java:260)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter.execute(FrameworkCommandInterpreter.java:150)
>         at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(FrameworkConsole.java:291)
>         at org.eclipse.osgi.framework.internal.core.FrameworkConsole.console(FrameworkConsole.java:276)
>         at com.sun.svc.container.admin.cli.Console.run(Console.java:85)
>         at java.lang.Thread.run(Thread.java:724) Caused by: java.lang.NoSuchMethodError:
> org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
>         at org.apache.log4j.Category.log(Category.java:288)
>         at org.apache.commons.logging.impl.Log4JLogger.info(Log4JLogger.java:199)
>         at org.springframework.context.support.AbstractApplicationContext.prepareRefresh(AbstractApplicationContext.java:412)
>         at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:350)
>         at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
>         at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
>         at …
Run Code Online (Sandbox Code Playgroud)

spring slf4j java-ee maven

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

如何将所有logback错误放入字符串中

假设我有一个包含 20 个类的程序,每个类都有private static Logger logger = LoggerFactory.getLogger(SomeClass.class);. 这 20 个类将记录警告、信息、调试或错误。

在其中一个类中,我如何才能访问迄今为止在程序中记录的所有错误(跨所有类)?注意我对将所有这些转储到 a 不感兴趣.log,我想从 Java 程序中访问它们。

java logging logback slf4j

0
推荐指数
1
解决办法
1554
查看次数

如何将特定的logback.xml传递给记录器?

我的项目包含多个模块.我希望其中一个模块使用特定logback.xml文件进行日志记录,该文件位于其资源文件夹中.如何用Java代码或属性配置它?

现在在我的Java代码中,我以这种方式获取记录器:

private static final Logger logger = org.slf4j.LoggerFactory.getLogger(MyClass.class);

有没有办法以某种方式将特定传递logback.xml给记录器?

java configuration logging logback slf4j

0
推荐指数
1
解决办法
993
查看次数

更改 HikariCP 日志文件

我目前使用 Sl4j 1.7.25 和 logback-classic-1.2.3

放在tomcat的类路径即WEB-INF/classes中的logback.xml如下:

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

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${catalina.home}/logs/foodini.log</file>
    <append>true</append>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <Pattern>[%d{dd-MMM-yyyy HH:mm:ss.SSS}] [%logger] [%-5level] - %msg%n</Pattern>
    </encoder>
  </appender>


  <root level="ALL">
    <appender-ref ref="FILE" />
  </root>

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

这工作正常,所有内容都记录在 tomcat 日志目录下的 foodini.log 文件中。

现在不幸的是,HikariCp 也以大约 30 秒的间隔不断地记录到同一个文件。它基本上写入池事件和泄漏等等。我需要把它放在一个单独的文件中,比如 hikari.log 而不是在 foodini.log 里面,它只是我的 web 应用程序的日志,以避免混乱。

我试过 :

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

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${catalina.home}/logs/foodini.log</file>
    <append>true</append>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <Pattern>[%d{dd-MMM-yyyy HH:mm:ss.SSS}] [%logger] [%-5level] - %msg%n</Pattern>
    </encoder>
  </appender>


  <appender name="HIKARI" class="ch.qos.logback.core.FileAppender">
    <file>${catalina.home}/logs/hikari.log</file>
    <append>true</append>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <Pattern>[%d{dd-MMM-yyyy …
Run Code Online (Sandbox Code Playgroud)

java slf4j hikaricp

0
推荐指数
1
解决办法
3177
查看次数

如果类具有“org”字段,@Slf4j 会生成“无法引用非静态变量 org”

为什么,如果我的类有一个org字段,我不能使用@Slf4jLombok 日志注释。以下代码将在第 #3 行产生编译错误:

MyClass.java:[3,1] 无法从静态上下文引用非静态变量 org

import lombok.extern.slf4j.Slf4j;

@Slf4j
class MyClass {
  String org;

  void printDebug() { log.debug("Org: " + org); }
}
Run Code Online (Sandbox Code Playgroud)

Lombok 文档 ( projectlombok.org/features/log ) 声称它添加了一个log字段。为什么它与 冲突org

java slf4j lombok

0
推荐指数
1
解决办法
998
查看次数

Lombok @Slf4j 和接口?

我正在尝试将日志记录添加到我的界面默认方法中。例如:

@Slf4j // not allowed
interface MyIFace {
    default ThickAndThin doThisAndThat() {
        log.error("default doThisAndThat() called"); 
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是我得到:

@Slf4j 仅在类和枚举上合法。

处理这个问题的正确方法是什么?

java logging slf4j lombok default-method

0
推荐指数
1
解决办法
1002
查看次数

使用slf4j Logger记录所有HashMap键和值

如何使用slf4j记录器记录HashMap键和值。我已经尝试了几次,但还是想出了办法。

以下代码仅记录“ test values”字符串,不包含maps参数的值。

  public void test(HashMap maps) {
      logger.info("test values", maps);
  }
Run Code Online (Sandbox Code Playgroud)

java logging slf4j

-1
推荐指数
2
解决办法
8825
查看次数

为什么 slf4j 字符串格式与 `string.format` 不同

如果您使用SLF4J和log.info("The value is: %s", "a_value")你会得到输出如下:The value is: %s。这与你可能得到的完全不同log.info(String.format("The value is: %s", "a_value")),更像是:The value is: a_value

我并不真的需要知道什么是正确的格式是,这么多的为什么在SLF4J日志消息的格式是一样的格式进行java.lang.String#format,以及是否这实际上仍然在Java中的正当理由,什么,10?

java slf4j

-1
推荐指数
1
解决办法
890
查看次数

使用Logback和slf4j

如何使用带有graylog的slf4j作为包装器?我们可以使用log4j和slf4j.我正在寻找一个好的graylog框架可以说任何我们可以使用graylog与slf4j?

java logging logback slf4j

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