这是我对log4net的配置,但它不会写入控制台,
请参阅appender:ConsoleAppender
<?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="C:\Users\name\Documents\visual studio 2010\Projects\logs\logfile.txt" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %C %m%n%newline" />
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %C %m%n%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
</log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)
为什么不写入控制台?
编辑1 这是我初始化它的方式:
log4net.Config.XmlConfigurator.Configure(new FileInfo("C:\\Users\\name\\Documents\\Visual Studio 2010\\Projects\\ExecutionEngine\\Libraries\\App.Config"));
Run Code Online (Sandbox Code Playgroud)
谢谢
你能推荐一下关于在分布式系统中使用log4j的简单教程,特别是关于SocketAppender的吗?
我试图找到一些基本的例子,但我失败了.
我正在使用log4net来记录项目.
我想登录3个不同的文件:请求,响应和错误.
<log4net debug="true">
<!--To turn off an appender, simply set it's threshold value to "OFF"-->
<appender type="log4net.Appender.RollingFileAppender" name="RequestAppender">
<file value="requests.txt" />
<threshold value="INFO" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
</layout>
</appender>
<appender type="log4net.Appender.RollingFileAppender" name="ResponseAppender">
<file value="responses.txt" />
<threshold value="INFO" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern …Run Code Online (Sandbox Code Playgroud) 我正在使用logback进行日志记录,并且在logback.xml中我将控制台附加程序作为
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>.
Run Code Online (Sandbox Code Playgroud)
我正在努力实现这样的目标...
time thread |-**CUSTOMLOGLEVEL** xyz.class - Message.
Run Code Online (Sandbox Code Playgroud)
为什么呢 我想通过定义日志级别或其他某种指标来轻松过滤消息。
例如:搜索日志级别为“ CUSTOMLOGLEVEL”的日志。有没有办法提供自定义日志级别或任何其他指示符,它表明这是自定义生成的日志,而不是某些框架生成的日志。
我进入了创建自定义类的方向。
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="com.logging.CustomLayout">
<param name="argument1" value="1" />
<param name="argument2" value="2" />
</layout>
</encoder>
</appender>
Run Code Online (Sandbox Code Playgroud)
但我不确定如何将外部输入这些参数。
如果我不清楚,请告诉我。
我花了一整天的时间来尝试解决我在webapp中使用log4j的日志记录问题.无论我做什么,我都无法摆脱以下几点:
log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Run Code Online (Sandbox Code Playgroud)
为了清楚起见,我已经阅读了Stack Overflow上有关此问题的所有文章.我已经阅读了log4j手册.我经历了十几个不同的教程.我尝试过属性方法和XML方法(分别是log4j.properties和log4j.xml).此外,我已确认正在读取log4j.xml文件.除了服务器在启动期间告诉我的事实,我可以通过.xml文件影响反馈级别.所以,是的,log4j.xml文件位于CLASSPATH中.
我知道我错过了一些简单而基本的东西.以下是相关文件:
LOG4J.XML(/ WEB-INF):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>
<!-- Application Loggers -->
<logger name="com.tiersoftinc.testlog">
<level value="info" />
</logger>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
<level value="info" /> …Run Code Online (Sandbox Code Playgroud) 我当前的构建主管在理论上有一个好主意 - 构建一个自定义Log4J appender,它接受Spring管理的bean并使用它们将错误记录到除标准日志文件之外的各种其他源.但是,除了创建一个在启动时使用应用程序上下文(代码片刻)初始化的单例之外,我似乎无法想到在Log4J appender中检索Spring托管bean的任何其他选项.
public class SpringSingleton implements ApplicationContextAware {
private static ApplicationContext context;
public SpringSingleton() {
super();
}
public static ApplicationContext getContext() {
return SpringSingleton.context;
}
public void setApplicationContext(ApplicationContext context) {
if(SpringSingleton.context != null) {
throw new IllegalStateException("Context is already set!");
}
SpringSingleton.context = context;
}
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,这些属性可以像Spring中的bean一样通过依赖注入设置 - 无论初始化多少个appender,bean引用都不会改变.有任何想法吗?
我有一个安全工具,可以通过电子邮件向用户发送新密码。当阈值为VERBOSE时,生产电子邮件模块(我不拥有并且不想更改)将使用Log4Net记录整个html电子邮件正文。由于电子邮件包含明文形式的域用户密码,因此,我想在日志消息到达附加程序之前从日志消息中删除该密码。
有没有一种方法可以将对象临时插入Log4Net堆栈中,从而允许我搜索LoggingEvent消息并对其进行更改以掩盖我找到的所有密码?我想插入对象,调用电子邮件模块,然后删除对象。
我正在编写一个log4j附加程序,该附加程序通过http将日志发送到服务器。我想使用apache-commons中的HttpClient来保持我的代码简洁漂亮。
现在的问题是HttpClient and Co.本身使用log4j。通常这是一件好事,但是当从log4j附加器实现中调用它们时,引入了循环引用或无穷循环,最终导致OutOfMemoryException。
当然,我无需任何第三方库就可以编写所需的内容,但我只是想知道是否存在针对此类问题的已知解决方案?
我必须在应用程序中添加一个面板,该面板将记录该应用程序的错误。我创建了一个扩展AppenderBase的类,并配置了xml文件以使用此类。
因此,当我在应用程序中登录时,会调用他的appender。
但是目前我还不知道如何将我的appender链接到面板。
你能指导我吗?
在我当前的项目中,我希望日期创建日志文件,即日志文件应驻留在
名称为日期的文件夹中.归档也应该在该特定文件夹中进行.
我正在使用的当前appender看起来像这样(它根据大小存档日志文件).
<appender name="AUDITFILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${PROJECT_HOME}\\projectname\\audits\\myproject.log</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${PROJECT_HOME}\\projectname\\audits\\myproject_%d{yyyy-MM-dd}.%i.zip
</fileNamePattern>
<maxHistory>10</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10KB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%date %msg%n
</pattern>
</encoder>
</appender>
Run Code Online (Sandbox Code Playgroud)