我有一个程序,可以对"myprogram"记录器进行许多log4net调用.它还调用其他代码,使log4net调用其他记录器.我想为"myprogram"捕获高于INFO的所有日志,并为其他所有内容捕获高于WARN的所有日志.这样,我就可以获得特定于我正在处理的任务的正在进行的工作消息,但仍然会通知支持代码中发生的潜在不良事件.我希望将其发送到Console和日志文件.
我有以下log4net配置:
<log4net>
<root>
<level value="WARN" />
<appender-ref ref="Console" />
<appender-ref ref="LogFile" />
</root>
<logger name="myprogram">
<level value="INFO" />
<appender-ref ref="Console" />
<appender-ref ref="LogFile" />
</logger>
<appender name="Console" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
<threshold value="INFO" />
</appender>
<appender name="LogFile" type="log4net.Appender.RollingFileAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="- %utcdate %level %logger %ndc %thread %message%newline" />
</layout>
<appendToFile value="false" />
<staticLogFileName value="true" />
<rollingStyle value="Once" />
<file value="mylogfile" />
<immediateFlush value="true" />
<threshold value="INFO" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
</appender>
</log4net>
Run Code Online (Sandbox Code Playgroud)
这对我来说非常有意义:log> WARN for …
警告显示......
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) 我有一个Visual Studio 2008 .NET C++/CLI解决方案.我的解决方案包含许多子项目.我为每个项目定义了一个自定义的buid目录,称之为Output.
MySoultion
每个子项目都使用Log4.net.所以我创建了一个目录(称为LogBinary)并将log4.net dll放在该文件夹中.然后使用log4net我添加这个dll作为我的每个项目的引用...但是当我尝试编译我的主项目(*.exe)我收到了大量警告(超过400 ...)
举个例子:
警告110警告C4945:'AbsoluteTimeDateFormatter': 无法从 'somepath\log4net.dll' 导入符号:因为'log4net :: DateFormatter :: AbsoluteTimeDateFormatter' 已经从另一个程序集 'log4net'"somepath\log4net.dll" 导入
很多警告
已经从另一个程序集导入
为什么我收到这个警告?是否有人为多个项目添加相同的dll(使用GAC除外)
最好的祝愿
我正在平台上的JavaScript应用程序上工作,它不支持日志输出,不允许为记录器输出打开新窗口,并且没有像Firebug或Safari调试器那样...
到目前为止,我正在使用floating <div>on z-index 2并且我在里面记录了文本,但这还不够.我正在寻找一些轻量级JavaScript JSONP记录器和一些PHP或Tomcat服务器对应...
谢谢STeN
在我的java swing应用程序中,我从存储在应用程序包中的属性文件中加载log4j属性,并将该属性文件加载为,
try {
PropertyConfigurator.configure("conf/log4j.properties");
logger.info("Starting the system.");
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
然后我在应用程序启动时出现以下错误,
log4j:ERROR Could not read configuration file [conf/log4j.properties].
java.io.FileNotFoundException: conf/log4j.properties (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:97)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:297)
at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:315)
at com.bio.ofm.mnu.views.SplashScreen$1.run(SplashScreen.java:70)
at java.lang.Thread.run(Thread.java:722)
log4j:ERROR Ignoring configuration file [conf/log4j.properties].
log4j:WARN No appenders could be found for logger (com.bio.ofm.mnu.views.SplashScreen).
log4j:WARN Please initialize the log4j system properly.
Run Code Online (Sandbox Code Playgroud)
这种加载属性文件的方式是错误的吗?请帮忙.
我构建一个.jar文件并使用该jar运行应用程序**
我知道这可能是一个新手问题,但我在设置Log4J时遇到问题:
我想运行一个log4j演示,这是我的代码:
import org.apache.log4j.Logger;
import org.apache.log4j.BasicConfigurator;
public class HelloLOG4j {
private static final Logger logger = Logger.getLogger(Hello.class);
public static void main(String argv[]) {
BasicConfigurator.configure();
logger.debug("Hello world.");
logger.info("What a beatiful day.");
}
}
Run Code Online (Sandbox Code Playgroud)
我在System和User var中设置了我的Classpath:C:\ Users\Adel\Downloads\apache-log4j-1.2.17\log4j-1.2.17.jar

但是当我运行我的程序时,我仍然会得到
errors found:
File: C:\Users\Adel\Desktop\various_topics\JavaProjects\HelloLOG4j.java [line: 2]
Error: package org.apache.log4j does not exist
Run Code Online (Sandbox Code Playgroud)
我知道我设置了classpath - 如果我运行cmd行:
C:\Program Files\Java\jdk1.6.0_20>print %LOG4J_HOME%
C:\Users\Adel\Downloads\apache-log4j-1.2.17\log4j-1.2.17.jar is currently bein
g printed
Run Code Online (Sandbox Code Playgroud) 我正在尝试将当前日期追加到log4j日志文件中.所以它会是这样的:
对myApp-2011-01-07.log
问题是我不想使用DailyRollingFileAppender.原因是每天运行的另一个脚本将备份logs文件夹中的所有内容.这是在Tomcat5.5下运行的.
这可能在log4j中吗?
我最近在其中一个项目上遇到了一些混乱,Log4j,Slf4j和Commons-Logging的"混合"由于混合了来自不同开源项目的不同JAR.
我看到越来越多的OS项目慢慢转向Slf4j.Logback似乎是Log4j的继承者.我认为它实际上是一个岔路口,但由于没有进一步的发展预期为1.3的Log4j Log4j的和2.0是一个实验性的发展,不知道它是否会永远离开那个状态...我不知道!
Log4j死了吗?
我在Spring学习Slf4j和log4j.我已经看到了我们使用一行的eyery
private final Logger logger = LoggerFactory.getLogger(name.class);
Run Code Online (Sandbox Code Playgroud)
我已经看到这是默认情况下获取root logger.
如何获得root logger?我错了吗?
如何获取log4j.xml文件中定义的其他记录器?
这是我的配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC
"-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
debug="false">
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %5p %c{2}: %m%n" />
</layout>
</appender>
<appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</appender>
<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="C:/log/spring-hib.log" />
<param name="MaxBackupIndex" value="100" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %5p %c{2}: %m%n" />
</layout>
</appender>
<logger name="com.example.foo">
<level value="DEBUG"/> …Run Code Online (Sandbox Code Playgroud) 我已经添加了log4net的所有部分,但它没有写入该文件.
我正在使用VS2012 LoadTest项目.
运行LoadTest项目时,无论是工作System.Console.WriteLine还是Debug.WriteLine()工作.
我添加了汇编信息行:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "web.config", Watch = true)] //For log4net 1.2.10.0
Run Code Online (Sandbox Code Playgroud)
我已经:
- 添加了webconfig部分
- 初始化了一个配置的XML初始化程序
- 用适当的日志初始化了新的log4net
我的app.config:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net debug="true">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Settings_CacheExplosion.txt" />
<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>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
</configuration> …Run Code Online (Sandbox Code Playgroud) 在Log4j 1.2中,您可以简单地使用记录器并在运行时添加一个appender.例如,这对于测试目的而言非常方便.我们曾经创建了一个模拟appender并将其添加到记录器中.随后我们可以做出不同的断言.
与log4j2有什么相同之处?
该log4j2页显示了如何添加附加目的地的几个例子.但是,它们会在整体上下文中添加appender.这似乎与为一个特定记录器添加appender不同.
另一个观察是,如果你使用org.apache.logging.log4j.core.Logger而不是org.apache.logging.log4j.Logger,你仍然可以添加appender.但是大多数人使用org.apache.logging.log4j.Logger.实际上,LogManager返回org.apache.logging.log4j.Logger的一个实例.所以,我不知道如何连接这两个类以及它们是否应该连接.
另一个观察是,如果我打电话
LogManager.getContext().getConfiguration().getLoggers()
Run Code Online (Sandbox Code Playgroud)
我可以在上下文中获取所有LoggerConfig对象的ist.我随后将appender添加到任何LoggerConfig对象.但问题是,如何获取与org.apache.logging.log4j.Logger实例相关的LoggerConfig?
这让我很困惑.