我想使用slf4j从.properties文件中读取数据,我可以在控制台上输出数据,但我想要的是在某个文件上输出数据,所以我需要文件Appender,这是在.properties文件和我声明的我无法使用slf4j读取.properties文件。任何人都可以帮忙。

PS:我需要一个例子来解释如何在slf4j中使用.properties文件以及如何初始化logger工厂。

===============>>#1 票数:6

http://slf4j.org/faq.html

SLF4J只是一个外观,这意味着它不提供完整的日志记录解决方案。 使用SLF4J无法执行配置appender或设置日志记录级别等操作。

slf4j-simple根本不提供额外的配置功能。

对于其他实现,您应该使用它们提供的配置方式。

例如,slf4j-log4j的log4j.properties。 请参阅http://logging.apache.org/log4j/1.2/manual.html#Configuration

===============>>#2 票数:3

如果使用log4j,也可以使用“Log4jLoggerAdapter”,在.properties文件中定义配置。 代码如下。

所需的罐子:

slf4j-api-1.7.5.jar
slf4j-log4j12-1.7.5.jar

If desired the source code (useful when debugging):
slf4j-api-1.7.5-sources.jar
slf4j-log4j12-1.7.5-sources.jar

测试java类:

import org.apache.log4j.PropertyConfigurator; 
import org.slf4j.LoggerFactory;
import org.slf4j.impl.Log4jLoggerAdapter;


public class Slf4j_log4j_main {

    private static Log4jLoggerAdapter log = (Log4jLoggerAdapter) LoggerFactory.getLogger(Slf4j_log4j_main.class);

    public static void main(String[] args) {
        PropertyConfigurator.configure(Slf4j_log4j_main.class.getClassLoader().getResource("basic/log4j.properties"));
        log.debug( "a debug" );
        log.info( "an info" );
        log.warn("a warn");
        log.error("an error");
        //log.fatal("a fatal");  // slf4j misses fatal log.
        log.trace("a fatal");
        System.out.println("");
        System.out.println("[INFO]: done");
    }
}

basic / log4j.properties

#@FROM: log4j_slf4j.basic
#@BASED: [BIN319P17]/[BIN319P42]
#using your own named logger.

# defining appender file
log=/home/alsdias/work/dev/java/lab/slf4j/log4j/log4j_slf4j/src/basic

# root logger setup
log4j.rootLogger = DEBUG, A1, FILE

#setting your own named logger. If more loggers, set additivity false (below)
log4j.logger.log4j.level=INFO,A1
log4j.additivity.log4j.level=false

# console appender config
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout

# Print the date in ISO 8601 format
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

# file appender config
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out

#setting the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true
#setting the threshold
log4j.appender.FILE.Threshold=debug
#setting the append to false, overwrite
log4j.appender.FILE.Append=false

#set a layout for the appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%d [%t] %-5p %c - %m%n

生成的输出:

2013-06-14 11:47:00,473 [main] DEBUG basic.Slf4j_log4j_main - a debug
2013-06-14 11:47:00,474 [main] INFO  basic.Slf4j_log4j_main - an info
2013-06-14 11:47:00,474 [main] WARN  basic.Slf4j_log4j_main - a warn
2013-06-14 11:47:00,475 [main] ERROR basic.Slf4j_log4j_main - an error

[INFO]: done

===============>>#3 票数:1

slf4j是一个API - 如果你认为它只包含接口而没有类,那么你就不远了。

您需要的行为是在接口的实现中,对于slf4j可能是logback,AVSL,JDK14(java.util.logging),log4j或Simple。 有些人可以阅读属性,有些则无法阅读。

对于logback,您可以使用

<property file="src/main/java/chapters/configuration/variables1.properties" />

有关详细信息,请参阅http://logback.qos.ch/manual/configuration.html#definingProps

  ask by Rookie translate from so

未解决问题?本站智能推荐:

2回复

如何使用slf4j读取.properties文件?

我正在尝试制作一个简单的程序,该程序读取属性文件并将输出记录到控制台,但是我无法做到这一点。 这是我的课: 这是我的属性文件: 当我运行它时,会出现以下异常:
1回复

如何使用SLF4J将日志写入文件

我决定使用slf4j代替Java自己的日志记录。 我已经使用slf4j成功登录到控制台。 但是我不知道如何将其写入日志文件。 日志文件将帮助我们在运行时收集可能的错误。 我正在通过这样做来实现slf4j, 私有静态最终org.slf4j.Logger LOGGER = or
1回复

log4j2.properties无法配置导入包使用的slf4j记录器

我在log4j2.properties文件中创建rootLogger log4j2.properties一些问题。 从下面的log4j2.properties文件中可以看到,我已经用info level定义了rootLogger ,并将其指向rolling附加程序RollingFile 。
1回复

AWS使用SLF4J记录单独的日志文件

是否有人使用日志SLF4J实施以使应用程序在Amazon环境中按租户分隔文件? 我在运行于localhost站点上的tomcat的应用程序中实现了此实现,日志文件已正常生成,但是当我在Amazon上部署然后下载日志时,未生成文件,输出最终将转到catalina.out 。
1回复

使用slf4j作为log4j2的抽象

我正在一个JAVA项目中,其中所有的代码记录都通过使用slf4j完成。 例如 现在,我们还有一个log4j2.xml文件。 当servlet上下文初始化时,将加载此文件。 其中configurator是log4j2库中的类。 我们还将这个log4j2.xml文件部署在服务器
1回复

使用slf4j和log4j2

我最近一直在尝试log4j2。 现在,我想用slf4j进行测试,并想知道如果我用log4j2尝试slf4j,log4j2中的所有功能(例如,通过disruptor的异步记录)是否可用。 我已经尝试将slf4j jar文件和log4j2和disruptor jar文件添加到测试项目中(我添加了
1回复

通过外部属性文件重定向公共记录而不编辑jar或SLF4J?

我有一个无法更改的.jar文件(例如foo.jar),其中包含commons-logging.properties文件(重定向到JDK14Logging),并且依赖于外部commons-logging.jar文件进行记录。 我相信将其设置为仅输出到stdout并不是很有帮助。 我们有一个
2回复

使用slf4j和log4j进行休眠日志记录不会生成日志文件

我正在尝试配置我的休眠应用程序以输出日志记录信息。 我将log4j.properties配置如下: 但是我认为休眠状态甚至都没有读取该文件,因为无论我对此文件设置了什么,都没有改变,并且删除了它,并且我的应用程序正常运行。 我认为,也许项目中的其他一些jar可能在jar中包含一个
1回复

slf4j配置以记录单个文件

logback.spring.xml配置为仅登录单个类 <logger name="classname"> <appender-ref ref="AUDIT_LOG"/> </logger> 在课堂上,只有1个通话记录。 但是,当我查
2回复

slf4j登录控制台而不是文件

我正在测试Milton WebDAV API,我需要在打开某个文档时进行记录。 我可以让它登录Eclipse的控制台,但不能让它将消息放在外部文件上。 在SO和谷歌找到了几个链接,但都没有。 我已经花了大约4小时。 任何猜测? 这是情况(尝试尽可能格式化): log4j.