我尝试编写自定义appender来登录NLog.我在log4net中看到了一些应该写的appender,它继承自抽象类AppenderSkeleton.有人可以在NLog中命名模拟类吗?
是否存在log4j的追加器,它只存储一个日志事件列表(用于单元测试,以验证没有写入错误日志)?
我通过扩展AppenderSkeleton类来实现自定义log4net appender.这很简单,任何人都可以要求并且完美地工作.
我的问题是我必须硬编码一些值,我想将它们从我的代码中删除到appender的配置.由于log4net知道它是如何配置的,我认为应该有办法向log4net询问它的配置.
我的appender看起来像这样:
<appender name="MyLogAppender" type="xxx.yyy.zzz.MyLogAppender">
<MyProperty1>property</MyProperty1>
<MyProperty2>property</MyProperty2>
<MyProperty3>property</MyProperty3>
</appender>
Run Code Online (Sandbox Code Playgroud)
如何获取MyProperty1-3的值,以便我可以在我的Appender中使用它?
在此先感谢Roalnd
我已将SMTPAppender配置到我的Java应用程序中.
<appender name="AdministratorEmail" class="org.apache.log4j.net.SMTPAppender">
<param name="Threshold" value="info" />
<param name="BufferSize" value="512" />
<param name="SMTPHost" value="smtp.sss.intranet" />
<param name="From" value="adminEbookMaker@sss.intranet" />
<param name="To" value="user@sss.it" />
<param name="Subject" value="errors" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{ISO8601}]%n%n%-5p%n%n%c%n%n%m%n%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="info" />
<param name="LevelMax" value="fatal" />
</filter>
</appender>
Run Code Online (Sandbox Code Playgroud)
我只收到ERROR日志类型而不是INFO类型!我更改了LevelMin,但没有,我插入了Thresold,但没有!
有人有任何建议吗?
我正在使用log4net登录我的应用程序.我的FileAppender工作正常,但我遇到MemoryAppender问题.
这是我的配置文件.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="Envision.log" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="" />
<param name="Footer" value="" />
<param name="ConversionPattern" value="%d [%t] %-5p %m%n" />
</layout>
</appender>
<appender name="MemoryAppender" type="log4net.Appender.MemoryAppender">
</appender>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="MemoryAppender" />
</root>
</log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我使用此代码来设置配置文件.
FileInfo file = new FileInfo(configPath);
log4net.Config.XmlConfigurator.Configure(file);
file = null;
Run Code Online (Sandbox Code Playgroud)
就像我说的,FileAppender效果很好.但我似乎无法得到任何事件.我试过用这样的东西来获取MemoryAppender.
Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;
MemoryAppender …Run Code Online (Sandbox Code Playgroud) 我已经在syslog appender上多次阅读了logback的文档.我的印象是系统日志守护程序在每台计算机上运行,所以我设置配置就像在他们的示例中一样.当我运行程序时,在检查系统日志时没有发生错误,那里没有记录任何内容.
<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
<syslogHost>my ip adress</syslogHost>
<facility>USER</facility>
<suffixPattern>[%thread] %logger %msg</suffixPattern>
</appender>`
Run Code Online (Sandbox Code Playgroud) 我一直试图将日志输出到JTextArea几天,但仍然没有运气.基本上我尝试过的是在现有的appender(如consoleAppender)之后创建自己的自定义appender,并尝试在log4j2.xml中配置它.我觉得我正朝着正确的方向前进,但不知怎的,我无法让它发挥作用.我在log4j2用户邮件列表中询问过,似乎没有人关心帮助我.希望我能在这里得到我的帮助.如果您知道如何实现它,请给我步骤甚至代码片段.
感谢您的高级帮助.
好吧,既然有人拒绝投票我的问题,因为它没有显示任何努力,那么我最好展示一些.我没有表现出我所做的任何事情,因为我不太确定我所做的是正确的方式,人们可能有自己的方法.
我面临的问题是,
代码如下,
TextAreaAppender
public class TextAreaAppender extends AbstractOutputStreamAppender<OutputStreamManager>{
private static TextAreaManagerFactory factory = new TextAreaManagerFactory();
public enum Target {
TEXTAREA
}
protected TextAreaAppender(String name, Layout<? extends Serializable> layout, Filter filter,
OutputStreamManager manager, boolean ignoreExceptions) {
super(name, layout, filter, ignoreExceptions, true, manager);
// TODO Auto-generated constructor stub
}
@PluginFactory
public static TextAreaAppender createAppender(
@PluginElement("Layout") Layout<? extends Serializable> layout,
@PluginElement("Filters") final Filter filter,
@PluginAttribute("target") final String t,
@PluginAttribute("name") final String name,
@PluginAttribute("follow") final String follow,
@PluginAttribute("ignoreExceptions") …Run Code Online (Sandbox Code Playgroud) 我想开始使用Chainsaw v2.几乎没有关于它的信息.我发现只有这个,但链接无法打开,所以不清楚.
我使用socketAppender:
log4j.rootLogger=DEBUG, server
log4j.appender.server=org.apache.log4j.net.SocketAppender
log4j.appender.server.Port=4712
log4j.appender.server.RemoteHost=localhost
log4j.appender.server.ReconnectionDelay=10000
Run Code Online (Sandbox Code Playgroud)
我创建了文件log4j.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration >
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
<appender name="A2" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.SimpleLayout"/>
</appender>
<plugin name="SocketReceiver" class="org.apache.log4j.net.SocketReceiver">
<param name="Port" value="4712"/>
</plugin>
<root>
<level value="debug"/>
</root>
</log4j:configuration>
Run Code Online (Sandbox Code Playgroud)
并选择它let me search for configuration file.但是没有日志.接下来我该怎么办?
我正在尝试运行此示例,但我在配置方面存在一些问题.
我复制log4j-jms.properties,jndi.properties,Log4jJMSAppenderExample.java
ProjectJMS
|
\_ src
| \_ Log4jJMSAppenderExample.java
| \_ jndi.propeties
\_ log4j-jms.properties
Run Code Online (Sandbox Code Playgroud)
并activemq在我的控制台中运行.
当我运行我的例子时,我得到了
log4j:WARN No appenders could be found for logger (org.apache.activemq.transport.WireFormatNegotiator).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.`PropertyConfigurator.configure("log4j-jms.properties");`
Run Code Online (Sandbox Code Playgroud)
所以我补充道
PropertyConfigurator.configure("log4j-jms.properties");
Run Code Online (Sandbox Code Playgroud)
现在我可以在Eclipse控制台中看到日志,但仍然有这个警告
log4j:WARN No appenders could be found for logger (org.apache.activemq.transport.WireFormatNegotiator).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
2012-08-13 10:21:44,741 INFO Log4jJMSAppenderExample - Test log
Received …Run Code Online (Sandbox Code Playgroud) My application logging crashes during maven build in the tests. This is the log4j2.xml what I have in the src/test/resources:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="stdout" target="SYSTEM_OUT">
<PatternLayout pattern="MyApp: %d{yyyy-MM-dd HH:mm:ss,SSS} %5p [%t] %c{1.} - %m%n" />
</Console>
</Appenders>
<Loggers>
<Logger name="com.my.app" level="info" additivity="false">
<Appender-ref ref="stdout"/>
</Logger>
<Root level="error">
<Appender-ref ref="stdout"/>
</Root>
</Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)
And I get this exception during test during build:
2017-11-23 15:12:28,371 main ERROR An exception occurred processing Appender stdout java.lang.NullPointerException
at org.apache.logging.log4j.core.impl.ThrowableProxy.toExtendedStackTrace(ThrowableProxy.java:671)
at org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:138) …Run Code Online (Sandbox Code Playgroud)