标签: appender

使用log4j登录数据库

因为在log4j中javadoc

警告:此版本的JDBCAppender很可能在将来被完全替换.此外,它不会记录异常.

我该怎么做才能登录数据库?

database logging log4j jdbc appender

17
推荐指数
2
解决办法
3万
查看次数

log4net不会看我的app.config

我配置我的log4net来监视对app.config文件所做的更改.

[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Run Code Online (Sandbox Code Playgroud)

当我运行我的应用程序并更改配置文件中的内容时,这些更改仅在我重新启动应用程序时生效.为什么会这样?

还有办法告诉log4net监视app.config中的更改吗?喜欢:

<appender name="FileAppender" type="log4net.Appender.FileAppender" >
    <watch value="true" />
</appender>
Run Code Online (Sandbox Code Playgroud)

-------------编辑-------------

我现在尝试使用单独的配置文件:log4net.config.
它看起来像这样:

<log4net>
  <appender name="FileAppender" type="log4net.Appender.FileAppender">
    <file value="c:\log.txt" />
    <appendToFile value="true" />
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%d [%t] %-5p %c (line %L) -- %m%n" />
    </layout>
  </appender>
  <root>
    <appender-ref ref="FileAppender" />
  </root>
</log4net>
Run Code Online (Sandbox Code Playgroud)

在我的assemblyInfo.cs中,我写了以下内容:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
Run Code Online (Sandbox Code Playgroud)

记录到该文件的类如下所示:

ILog myLogger = LogManager.GetLogger(typeof(Form1));
myLogger.Debug("test");
Run Code Online (Sandbox Code Playgroud)

这就像旧版本一样.日志文件条目已经生成,但是当我在运行时更改我的log4net.config时,这些更改不会应用...."Watch = true"应该启用该功能,对吧?

log4net app-config watch appender

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

使记录器跳过logback中的根部分

我定义了几个记录器和一个带有几个appender的根节,类似于:

  <logger name="X" level="debug"/>
  <logger name="Y" level="trace"/>

  <logger name="Z" level="warn">
    <appender-ref ref="ALERTS-SYSLOG" />
  </logger>

  <root level="INFO">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="FILE"/>
    <appender-ref ref="BUFFER"/>
    <appender-ref ref="SYSLOG"/>
  </root>
Run Code Online (Sandbox Code Playgroud)

我想要完成的是,名为Z的记录器只能访问ALERTS-SYSLOG appender而不是根部分中定义的所有记录器.只有配置在XML文件上才可能吗?

java logback appender

11
推荐指数
2
解决办法
5819
查看次数

如何解决log4j中的警告??? Continuable parsing error ...元素类型"log4j:configuration"的内容必须匹配

警告显示......

log4j:WARN Continuable parsing error 28 and column 23
log4j:WARN The content of element type "log4j:configuration" must match
  "(renderer*,appender*,(category|logger)*,root?,categoryFactory?)".
Run Code Online (Sandbox Code Playgroud)

执行java文件时

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration>
        <appender name="console" class="org.apache.log4j.ConsoleAppender">
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="\n[%-6r] - %m" />
            </layout>
        </appender>
        <category name="se.jayway.ddsteps">
            <priority value="info"></priority>
        </category>
        <appender name="FILE" class="org.apache.log4j.FileAppender">
            <param name="file"
                value="D:/workspace_Testing/IdMUnitTests/logs/IdMUnitlog.log" />
            <param name="immediateFlush" value="true" />
            <param name="threshold" value="debug" />
            <param name="append" value="false" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%m%n" />
            </layout>
        </appender>

        <root>
            <priority value="INFO"></priority>
            <appender-ref ref="console" /> …
Run Code Online (Sandbox Code Playgroud)

java log4j log4 appender

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

每次使用log4j运行一个日志文件

如何将log4j.properties配置为每次运行应用程序时只有一个日志文件.我已经读过你应该在文件名中使用时间戳,但随着时间的推移,每次运行会创建许多文件.

我尝试过DailyRollingFileAppender和RollingFileAppender但是找不到一种方法来为每次运行配置一个日志.不应将日志分成多个日志,也不应截断日志,应保留旧运行的文件.

每个类都有一个静态的org.slf4j.Logger,它有自己的类名:

private static final Logger log = LoggerFactory.getLogger(Foo.class);
Run Code Online (Sandbox Code Playgroud)

这是我当前的log4j.properties

log4j.rootLogger=error, RootAppender, RootErrorAppender

#log4j.logger.com.example=info, qspaBackendAppender, stderr
log4j.logger.com.example=info, qspaBackendAppender
log4j.additivity.com.example=true

#log4j.logger.com.example.util=trace, qspaBackendAppender, stderr
#log4j.additivity.com.example.util=true

log4j.appender.qspaBackendAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.qspaBackendAppender.file=logs/qspaBackend.log
log4j.appender.qspaBackendAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.qspaBackendAppender.layout.ConversionPattern=<%d{yyyy-MM-dd HH:mm:ss}> %-5p : %C{1} %c{2} : %m%n

log4j.appender.stderr=org.apache.log4j.ConsoleAppender
log4j.appender.stderr.Target=System.err
log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
log4j.appender.stderr.layout.ConversionPattern=%-5p %c{1}:%L - %m%n

log4j.appender.RootAppender=org.apache.log4j.RollingFileAppender
log4j.appender.RootAppender.file=logs/root.log
log4j.appender.RootAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.RootAppender.layout.ConversionPattern=<%d{yyyy-MM-dd HH:mm:ss}> %-5p : %C{1} %c{2} : %m%n

log4j.appender.RootErrorAppender=org.apache.log4j.RollingFileAppender
log4j.appender.RootErrorAppender.file=logs/rootError.log
log4j.appender.RootErrorAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.RootErrorAppender.layout.ConversionPattern=<%d{yyyy-MM-dd HH:mm:ss}> %-5p : %C{1} %c{2} : %m%n
log4j.appender.RootErrorAppender.threshold=error
Run Code Online (Sandbox Code Playgroud)

java logging log4j slf4j appender

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

如何使用Kafka 0.8 Log4j appender

我正在尝试运行Kafka-0.8 Log4j appender而我无法做到.我希望我的应用程序通过Log4j appender将日志直接发送到kafka.

这是我的log4j.properties.我找不到任何合适的编码器,所以我只是将其配置为使用默认编码器.(例如,我对这条线进行了评论.)

log4j.rootLogger=INFO, stdout, KAFKA

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.KAFKA=kafka.producer.KafkaLog4jAppender
log4j.appender.KAFKA.layout=org.apache.log4j.PatternLayout
log4j.appender.KAFKA.layout.ConversionPattern=%-5p: %c - %m%n
log4j.appender.KAFKA.BrokerList=hnode01:9092
log4j.appender.KAFKA.Topic=DKTestEvent

#log4j.appender.KAFKA.SerializerClass=kafka.log4j.AppenderStringEncoder
Run Code Online (Sandbox Code Playgroud)

这是我的示例应用程序.

import org.apache.log4j.Logger;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.PropertyConfigurator;

public class HelloWorld {

        static Logger logger = Logger.getLogger(HelloWorld.class.getName());

        public static void main(String[] args) {
            PropertyConfigurator.configure(args[0]);

            logger.info("Entering application.");
            logger.debug("Debugging!.");
            logger.info("Exiting application.");
        }
}
Run Code Online (Sandbox Code Playgroud)

我用maven编译.我在我的pom.xml中包含了kafka_2.8.2-0.8.0和log4j_1.2.17

我收到这些错误:

INFO [main] (Logging.scala:67) - Verifying properties
INFO [main] (Logging.scala:67) - Property metadata.broker.list is overridden to hnode01:9092
INFO [main] (Logging.scala:67) - Property serializer.class is overridden …
Run Code Online (Sandbox Code Playgroud)

log4j appender apache-kafka

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

如何在log4j2中配置null appender

Log4j 1.*有一个null appender类,但我找不到log4j中的等价物2.是否有一个?如何在log4j2.xml中配置null appender?

java log4j appender log4j2

9
推荐指数
1
解决办法
3155
查看次数

自定义日志附加程序 - 预先添加文件标题并进行翻转

我需要的功能是在配置的日志文件的开头写一个标题行.此外,日志文件应该根据时间模式滚动(我说的是logback 1.0.7).

所以,我正在考虑编写一个Appender - 虽然我不确定它是不是我真正需要的自定义布局.

1)Appender

根据logback的文档,正确的方法是扩展AppenderSkeleton,但那么我将如何将其与RollingFileAppender(以使文件翻转?)相结合?

另一方面,如果我扩展RollingFileAppender,我会覆盖哪种方法来装饰现有的功能?我怎么告诉它只在文件的开头写这个特定的字符串?

2)布局

类似地,该方法似乎正在扩展LayoutBase,并提供实现doLayout(ILoggingEvent event).但同样,我不知道如何装饰行为 - 只是在文件中添加一个新行,而不是破坏其功能(因为我仍然希望其余日志正确显示).

getFileHeader()LayoutBase看起来很有希望,但我要如何使用它?是否打算被自定义布局覆盖?(可能是的,因为它是Layout界面的一部分,但那又怎么样?)

谢谢!

layout logback rollingfileappender appender

8
推荐指数
2
解决办法
3732
查看次数

按大小和时间滚动日志

我使用RollingFileAppenderlog4j 1.2.16,其推出的日志文件,当他们达到一定规模.现在我想每天滚动日志文件,当它们达到一定大小时.因此,每天将有一个或多个日志文件.

例如,

myapp.log
myapp-17.12.2013.log
myapp-16.12.2012.log
myapp-16.12.2012.1.log
myapp-16.12.2012.2.log

是否有一个现成的appender,它已经做到了吗?

java log4j rollingfileappender appender

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

如何在log4j2 jdbcappender中设置日期时处理null?

当我在日期列中设置空值时,我在表中得到"1900-01-01 00:00:00.000"值,我期望该列中为NULL.因为这样在jdbc中正确处理,如果我这样说

preparedStatement.setBindParam(Types.TIMESTAMP, 12, startdate);
Run Code Online (Sandbox Code Playgroud)

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug">

    <CustomLevels>
        <CustomLevel name="TESTLOG" intLevel="552" />
    </CustomLevels>

    <Appenders>

        <JDBC name="myAppender" tableName="MYTABLE">
            <DataSource jndiName="java:MyDataSource" />
            <Column name="ID" pattern="%X{ID}" isUnicode="false"/>
            <Column name="startdate" pattern="%X{startdate}" isUnicode="false"/>
            <Column name="enddate" pattern="%X{enddate}" isUnicode="false"/>
        </JDBC>

    </Appenders>

    <Loggers>
        <Root level="trace"  includeLocation="false">
            <AppenderRef ref="myAppender" level="TESTLOG" />
        </Root>
    </Loggers>

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

列startdate和enddate的数据类型是datetime

ThreadContext.put("startdate", startdate != null ? startdate.toString() : null);
ThreadContext.put("enddate", a_reportEndDate != null ? enddate.toString() : null);
final Logger LOGGER = LogManager.getLogger();
LOGGER.log(Level.forName("TESTLOG", 552), "");
Run Code Online (Sandbox Code Playgroud)

对于具有空值的String也是如此.

java jdbc appender log4j2

8
推荐指数
1
解决办法
520
查看次数