我一直试图在我的asp.net Web应用程序中记录log4net,但没有成功或任何明显的错误.我试图使用ADONetAppender appender与以下配置:
<log4net>
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
<bufferSize value="1" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="server=" />
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception],[Context]) VALUES
(@log_date, @thread, @log_level, @logger, @message, @exception, @context)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="32" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%t" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="512" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%p" />
</layout>
</parameter>
<parameter> …Run Code Online (Sandbox Code Playgroud) 我有一个控制台应用程序,我正在转换为Windows服务.作为控制台应用程序,我的log4net日志记录工作正常.但是将它转换为Windows服务,我的log4net日志记录已停止工作.
我已将此添加到服务项目中的assemblyInfo.cs中:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
Run Code Online (Sandbox Code Playgroud)
这是我的onstart和onstop服务类:
private static log4net.ILog _log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
private Builder _builder;
public YCSWebServerService()
{
InitializeComponent();
_builder = new Builder();
}
protected override void OnStart(string[] args)
{
_log.Info("YCSWebServerService started");
_builder.Start();
}
protected override void OnStop()
{
_log.Info("YCSWebServerService stopped");
_builder.Stop();
}
Run Code Online (Sandbox Code Playgroud)
我有一个"特定的"log4net配置文件添加到我的服务项目:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="EventLogAppender" />
</root>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
<threshold value="DEBUG" />
<applicationName value="Lantic YCS WebServer" /> …Run Code Online (Sandbox Code Playgroud) 我正在使用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) 刚开始使用log4net并试图了解配置和记录器层次结构.此层次结构是基于名称空间还是类和方法/函数层次结构?
可以说我有以下类结构......
public class MyClass
{
private static readonly ILog log = LogManager.GetLogger(typeof(MyClass));
public void Method1()
{
log4net.info("message");
}
public void Method2()
{
log4net.info("message");
}
}
Run Code Online (Sandbox Code Playgroud)
是否可以在配置中为method1中的log4net.info设置使用一个appender和方法2中的log4net.info来使用另一个appender,即使它们不属于同一类型,例如SmtpAppender.如果是这样,配置看起来如何.这是我的第一次尝试.
<appender name="SMTP1" type="log4net.Appender.SMTPAppender">
</appender>
<appender name="SMTP2" type="log4net.Appender.SMTPAppender">
</appender>
<logger name="MyClass.Method1">
<level value="INFO" />
<appender-ref ref="SMTP1" />
</logger>
<logger name="MyClass.Method2">
<level value="INFO" />
<appender-ref ref="SMTP2" />
</logger>
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个C#代码,它通过log4net API 在运行时检索log4net日志文件的名称模式.
也就是说,如果在log4net.config中定义了以下appender:
<appender name="MyAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="%date{yyyy}\%date{MM}\%date{dd}\%property{Id}.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="16" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
</appender>
Run Code Online (Sandbox Code Playgroud)
我想在代码中的字符串变量中获取%date {yyyy} \%date {MM} \%date {dd} \%property {Id} .log(不将log4net.config解析为纯XML).
有没有人有想法来拉这个伎俩?
先感谢您.
我正在尝试实现Quartz.Net.只要没有配置日志记录一切正常(调试输出显示"找不到配置部分 - 抑制日志输出").
启用日志记录后,我将收到以下错误:无法从配置部分"common/logging"获取Common.Logging的配置.
内部异常:为common/logging创建配置节处理程序时发生错误:无法创建类型'Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter,Common.Logging.Log4net'
我用了几个资源,这其中以varify我的配置,但据我看到它应该是正确的.
我的app.config:
<configSections>
<section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net">
<arg key="configType" value="INLINE" />
</factoryAdapter>
</logging>
</common>
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%-6p%d{yyyy-MM-dd hh:mm:ss} – %m%n" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="ConsoleAppender" />
</root>
</log4net>
<quartz>
<add key="quartz.scheduler.instanceName" value="Driver.Service.Scheduler" />
<add …Run Code Online (Sandbox Code Playgroud) c# log4net log4net-configuration common.logging quartz.net-2.0
我正在尝试在我的asp.net Web应用程序中实现log4net.但不幸的是,文件未创建.以下是我的配置.
1.添加了log4net .dll参考
2.Web.config设置.
<configSections>
<section name="log4net"type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="E:/Log/error_%date{dd-MM-yyyy}.log"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<!--<maxSizeRollBackups value="5"/>
<maximumFileSize value="10MB"/>
<staticLogFileName value="true"/>-->
<datePattern value="yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline%exception%newline%newline"/>
</layout>
</appender>
<root>
<appender-ref ref="RollingFileAppender"/>
</root>
</log4net>
Run Code Online (Sandbox Code Playgroud)
3.添加了组件参考
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Run Code Online (Sandbox Code Playgroud)
4.记录后面的代码
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
try
{
throw new System.IO.FileNotFoundException();
}
catch (Exception ex)
{
log.Error("Error error logging", ex);
}
Run Code Online (Sandbox Code Playgroud)
这些是我遵循的步骤,但是没有创建日志......
请提出你的建议.
提前致谢
我有一个使用log4net进行日志记录的内部应用程序.我想要生成日志%LOCALAPPDATA%\Vendor\App\application.log.不幸的是,log4net正在创建日志文件%APPDATA%.这不是一个大问题,因为我们真的不在这里使用漫游配置文件,但我不喜欢在我的代码中留下一点特质,如果我可以避免它.
有关如何将文件写入我指定的位置而不用编程配置log4net并使用pinvoke获取XP路径的任何想法?
如果有任何帮助,这是我的配置文件的appender部分:
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="${LOCALAPPDATA}\Vendor\App\application.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="100KB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger%newline%message%newline" />
</layout>
</appender>
Run Code Online (Sandbox Code Playgroud) 使用版本1.2.11.日志记录在我的开发机器上运行,但在部署时不会创建目录或日志.
我试过了:
每次更改后停止并启动应用程序池.
输出文件中没有生成任何内容.
我的log4Net配置如下.关于下一步该尝试的任何想法?
<?xml version="1.0"?>
<log4net debug="true">
<appender name="file" type="log4net.Appender.RollingFileAppender">
<file value="..\Logging\log.txt" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
<threshold value="DEBUG" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<appender name="console" type="log4net.Appender.DebugAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%X{auth}> - %m%n" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="file" />
<appender-ref …Run Code Online (Sandbox Code Playgroud) 我有一个滚动文件appender配置如下:
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="appname" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value="'.'yyyyMMdd'.log'" />
<maxSizeRollBackups value="30" />
<maximumFileSize value="10MB" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我想知道是否有办法将旧的日志文件移动到"存档"文件夹,而不是将它们移动到同一个文件夹?