标签: appender

使用log4net的RichTextBoxAppender

有没有办法使用log4net以编程方式创建RichTextBoxAppender?换句话说没有xml app.config?

c# log4net richtextbox appender winforms

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

通过XML文件*和*代码配置log4net appender

我今天开始玩log4net,到目前为止,我真的很喜欢它.为了保留我们当前的日志记录功能,应用程序需要在应用程序启动时创建新的日志文件.日志文件名具有编码在其中的日期和时间戳.目前,我已经通过一个配置了log4net XmlConfigurator,这很好用,除了我的文件名RollingFileAppender在配置XML文件中是硬编码的.

我想继续使用XmlConfigurator,但是在调用之后Configure(),我希望得到RollingFileAppender和,在代码中,将其文件值更改为动态生成的字符串.网上的示例文档现在似乎已经关闭了,但是我已经深入研究了SDK参考,看起来我可以使用HeirarchyGetAppenders()做我需要做的事情.我是在正确的轨道上吗?

好的,我对此进行了尝试并尝试了以下代码,但这些代码无效:

private static readonly ILog _log = LogManager.GetLogger(typeof(GUI));
// in the config file, I've set the filename to example.log, and it works
XmlConfigurator.Configure(new FileInfo("log_config.xml"));
Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;
if(hierarchy != null) {
    // get the appenders
    IAppender[] appenders = hierarchy.GetAppenders();
    // change the filename for the RollingFileAppender
    foreach( IAppender a in appenders) {
        RollingFileAppender rfa = a as …
Run Code Online (Sandbox Code Playgroud)

log4net rollingfileappender appender log4net-configuration

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

使用log4j将日志发送到Java中的Web服务

我对Web服务世界还很陌生,但对此有所了解log4j.

我需要实现一个功能,它将日志消息发送到Web服务,而不是使用Web服务appender发送到文件.

我通过在谷歌搜索WebServiceAppender是一个log4j类,但我无法验证这一点.

log4j.appender.CONSOLE=main.WSAppender 
log4j.appender.CONSOLE.endpoint=http://localhost:8080/Logging/services/logging?w??sdl 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern=%p [%t] %c{2} (%M:%L) :: %m%n 
WSAppender.java extends AppenderSkeleton, can't resolve endpoint, hostname in append()    

if (endpoint == null) { 
    System.out.println("no endpoint set. Check configuration file"); 
    System.out.println("[" + hostname + "] " + this.layout.format(event)); 
    return; 
}
Run Code Online (Sandbox Code Playgroud)

java web-services log4j appender

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

logback asyncAppender似乎不是线程安全的

我在其中添加了自己的SUMMARY_APPENDER,创建了一个AsyncAppender.

ASYNC Appender如下

 <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
 <discardingThreshold>2</discardingThreshold>
 <appender-ref ref="SUMMARY_APPENDER" />
 <!--   <appender-ref ref="PROCESSING" /> -->
 </appender>
Run Code Online (Sandbox Code Playgroud)

我创建了另一个SUMMARY_APPENDER

<appender name="SUMMARY_APPENDER"
    class="com.my.test.logger.async.MyRollingAppender">
    <file>./logs/summary.log</file>
    <rollingPolicy class="com.my.test.logger.async.MyTimeBasedRollingPolicy">
        <!-- daily rollover -->
        <fileNamePattern>./logs/%d{yyyy-MM-dd,aux}/summary.%d{yyyy-MM-dd}.%i.log
        </fileNamePattern>
        <TimeBasedFileNamingAndTriggeringPolicy
            class="com.my.test.logger.async.MySizeTimeBasedPolicy">
            <maxFileSize>10MB</maxFileSize>
        </TimeBasedFileNamingAndTriggeringPolicy>
        <!-- keep 30 days' worth of history -->
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder>
        <pattern>
            %d{ISO8601} [%t] %p %c %L - %m%n
        </pattern>
    </encoder>
</appender>
Run Code Online (Sandbox Code Playgroud)

RollingPolicy由我的Custom Appenders正确扩展.

  • 我已将其导出为带有logback.xml的自定义jar.

  • 我将它添加到新java项目的classpath中.

  • 运行一些并发程序进行日志记录,以确保所有线程同时正确地记录它.

程序如下,我创建了TestLogger1,2 ... 5并运行它们.

 public class TestingLogger {
 private static Logger log = LoggerFactory.getLogger(TestingLogger.class);
   public static void main(String[] args) {
    LoggerContext …
Run Code Online (Sandbox Code Playgroud)

logging logback rollingfileappender appender log4j2

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

如何使用Log4j2 xml重写附加程序在登录文件之前修改LogEvent

我想在log4j2.xml文件中使用重写追加程序,以便在记录之前可以修改日志。我没有从Google获得太多帮助。根据log4j2文档,Rewrite是具有重写方法的接口,而MapRewritePolicy是实现类,当我运行该类时,我可以看到我的web3.log文件正在生成,但是看不到日志内容的任何修改。我看到了MapRewritePolicy源代码,并在我的项目中将本地实现类创建为MapRewritePolicyImpl.java,并放置了一些System.out来查看代码流从log4j2.xml文件进入此类。我已经修改了log4j2.xml以使用MapRewritePolicyImpl.java,但是代码流没有进入MapRewritePolicyImpl.java类。

<Rewrite name="rewrite" >
            <Appender-Ref ref="web3" />
             <MapRewritePolicyImpl">
                <KeyValuePair key="creditCard" value="new12345"/>
            </MapRewritePolicyImpl> 
        </Rewrite>



    <Configuration monitorInterval="5" status="debug" strict="true">
        <Appenders>
            <RollingFile name="web3" fileName="../logs/web3.log" 
                filePattern="${sys:catalina.home}/logs/$${date:yyyy-MM-dd}/web3-%d{yyyy-MM-dd}-%i.log.gz">
                <PatternLayout
                    pattern="%d{dd/MM/yyyy HH:mm:ss,SSS} [%X{cartID}] [%X{sessionId}] [%p] [%t] [%c] (%F:%L)  - %m%n" />
                <Policies>
                    <TimeBasedTriggeringPolicy interval="1"
                        modulate="true" />
                    <SizeBasedTriggeringPolicy size="10 MB" />

                </Policies>
            </RollingFile>
            <Rewrite name="rewrite" >
                <Appender-Ref ref="web3" />
                 <MapRewritePolicy">
                    <KeyValuePair key="creditCard" value="new12345"/>
                </MapRewritePolicy> 
            </Rewrite>
    </Appenders>
    <Loggers>
        <Logger name="com.virginamerica" level="info" additivity="false">
            <!-- <Appender-Ref ref="web3" /> -->
            <Appender-Ref ref="rewrite"/>
        </Logger>
    </Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)

java xml logging appender log4j2

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

log4j2未检测到自定义appender插件

我正在尝试为log4j 2.0创建一个自定义appender,但是在让我的log4j配置识别appender时遇到了问题.我知道log4j 2.0不支持配置属性中的包.所以我按照这里的建议尝试用普通的javac运行代码,但即使这样它也会出现这个错误:2015-03-11 18:47:35,281 ERROR Error processing element Test: CLASS_NOT_FOUND 2015-03-11 18:47:35,307 ERROR Unable to locate appender test1 for logger

这是我的自定义appender:

@Plugin(name = "Test", category = "Core", elementType = "appender", printObject = true)
public class TestAppender extends AbstractAppender{
protected TestAppender(String name, Filter filter,
        Layout<? extends Serializable> layout, boolean ignoreExceptions) {
    super(name, filter, layout, ignoreExceptions);
    // TODO Auto-generated constructor stub
}

@PluginFactory
public static TestAppender createAppender(@PluginAttribute("name") String name,
        @PluginAttribute("ignoreExceptions") boolean ignoreExceptions,
        @PluginElement("Layout") Layout<? extends Serializable> layout,
        @PluginElement("Filters") Filter …
Run Code Online (Sandbox Code Playgroud)

java appender log4j2

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

Log4j2获取记录事件

我试图将一个小的测试用例(确保我们的日志记录按预期工作)从log4j-1.6迁移到log4j-2.6。我们正在做的是传递映射并将其记录在Debug级别下,并验证loggingEvent是否为Debug并为预期的呈现消息进行断言。我们正在这样做

   final ArgumentCaptor<LoggingEvent> loggingEventCaptor = ArgumentCaptor.forClass(LoggingEvent.class);

    verify(mockAppender).doAppend(loggingEventCaptor.capture());
    final LoggingEvent loggingEvent = loggingEventCaptor.getValue();

    assertEquals(Level.DEBUG, loggingEvent.getLevel());
    assertEquals("ExpectedMessage", loggingEvent.getRenderedMessage());
Run Code Online (Sandbox Code Playgroud)

但后来知道,appender和loggingEvents不在log4j2中。但我找不到实现这一目标的方法。log4j2是否可以?

java logging appender log4j2

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

Log4j2 路由附加器 JavaScript 配置错误

我正在使用 lombok 的 log4j2 记录器,我需要根据 ThreadContext 映射配置路由附加程序。路由键由脚本确定。这是整个 log4j2.xml 配置文件:

<Appenders>
    <Console name="Console" target="SYSTEM_OUT">
        <PatternLayout pattern="%highlight{%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %c{1}: %msg%n%throwable}"/>
    </Console>

    <RollingFile name="GeneralRollingFile" filename="log/test-log.log"
                 filepattern="log/test-log-%d{yyyy-MM-dd HH:mm:ss}.log">
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %c{1}: %msg%n%throwable"/>
        <Policies>
            <SizeBasedTriggeringPolicy size="25 MB"/>
        </Policies>
        <DefaultRolloverStrategy max="20"/>
    </RollingFile>

    <Routing name="Routing">

        <Routes>
            <Script name="RoutingInit" language="JavaScript">
                <![CDATA[
                if (logEvent.getContextMap().containsKey("operation-1")) {
                    return "operation-1";
                } else if (logEvent.getContextMap().containsKey("operation-2")) {
                    return "operation-2";
                } else {
                    return "general";
                }
            ]]>
            </Script>

            <Route key="general" ref="GeneralRollingFile"/>

            <Route key="operation-1"> 
                <RollingFile name="operation-1-rolling"
                             fileName="log/operation-1/${ctx:operation-1}.log"
                             filePattern="log/operation-1/${ctx:operation-1}-%d{yyyy-MM-dd HH:mm:ss}.log">

                    <PatternLayout pattern="%d{yyyy-MM-dd …
Run Code Online (Sandbox Code Playgroud)

javascript java logging appender log4j2

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

ch.qos.logback.core.util.DynamicClassLoadingException:无法实例化类型ch.qos.logback.classic.net.SMTPAppender

logback.xml在spring-boot应用程序中有以下内容:

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

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
       ...
    </appender>

    <timestamp key="datetime" datePattern="yy-MM-dd-HH-mm-ss" />
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        ...
    </appender>

    <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
        <smtpHost>smtp.gmail.com</smtpHost>
        <smtpPort>587</smtpPort>
        <STARTTLS>true</STARTTLS>
        <username></username>
        <password></password>
        <to>admin@gmail.com</to>
        <from>dev@gmail.com</from>
        <subject>Error</subject>
        <layout class="ch.qos.logback.classic.html.HTMLLayout"/>
        <asynchronousSending>true</asynchronousSending>
        <encoder>
            <pattern>
                %d{dd.MM.yy HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
            </pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
        <appender-ref ref="EMAIL" />
    </root>

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

上下文没有错误:

java.lang.IllegalStateException: Logback configuration error detected: 
ERROR in ch.qos.logback.core.joran.action.AppenderAction - Could not create an Appender of type [ch.qos.logback.classic.net.SMTPAppender]. ch.qos.logback.core.util.DynamicClassLoadingException: …
Run Code Online (Sandbox Code Playgroud)

java logging smtp logback appender

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

使用log4j清除文件?

我使用log4j写入具有以下属性文件的文件:

log4j.rootLogger=DEBUG, FA

#File Appender
log4j.appender.FA=org.apache.log4j.FileAppender
log4j.appender.FA.File=temp.ppr
log4j.appender.FA.layout=org.apache.log4j.PatternLayout
log4j.appender.FA.layout.ConversionPattern= %m%n
Run Code Online (Sandbox Code Playgroud)

我的问题是,在我的程序的每次运行中,我想清除文件"temp.ppr",然后使用lo4j有效地写入它?或者你推荐其他解决方案?

谢谢

java log4j text-files appender

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

Logback-通过记录器设置阈值

我想为每个记录器配置日志行的速率限制(例如:每个记录器每分钟最多可以发送100条日志行)。

我有想法,是否应该使用新的简单过滤器(我认为TurboFilter不适合)?还是一个新的appender?过滤器听起来更合适,但是其他过滤器可以替代我的决定,这就是为什么我认为要使用appender实现它。

你有什么想法?

filter logback appender

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

尝试启动 SBT 时 Apache log4j Appender 突然出现问题

我正在用SBT执行一个scala程序,需要停止执行,所以我按Ctrl+c结束执行,这也结束了SBT的执行。我已经这样做了一千次,但这次 SBT 不会重新启动,并给出以下错误:

java.lang.NoClassDefFoundError: org/apache/logging/log4j/core/Appender
    at sbt.StandardMain$.initialGlobalLogging(Main.scala:114)
    at sbt.StandardMain$.initialState(Main.scala:136)
    at sbt.xMain.run(Main.scala:70)
    at xsbt.boot.Launch$.$anonfun$run$1(Launch.scala:149)
    at xsbt.boot.Launch$.withContextLoader(Launch.scala:176)
    at xsbt.boot.Launch$.run(Launch.scala:149)
    at xsbt.boot.Launch$.$anonfun$apply$1(Launch.scala:44)
    at xsbt.boot.Launch$.launch(Launch.scala:159)
    at xsbt.boot.Launch$.apply(Launch.scala:44)
    at xsbt.boot.Launch$.apply(Launch.scala:21)
    at xsbt.boot.Boot$.runImpl(Boot.scala:78)
    at xsbt.boot.Boot$.run(Boot.scala:73)
    at xsbt.boot.Boot$.main(Boot.scala:21)
    at xsbt.boot.Boot.main(Boot.scala)
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.core.Appender
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 14 more
[error] [launcher] error during sbt launcher: java.lang.NoClassDefFoundError: org/apache/logging/log4j/core/Appender
Run Code Online (Sandbox Code Playgroud)

我尝试安装新版本的 SBT,但这不起作用,并且出现相同的错误。我完全不知道如何解决这个问题。我真的不知道问题是什么。谢谢你的帮助。

log4j scala appender sbt

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