将日志从log4net写入文件时遇到了一些麻烦.我似乎按照手册中的描述完成所有操作,但这不起作用.这是我的logging.config文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="log.txt" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %message%newline" />
</layout>
</appender>
</log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)
请帮助一个实际工作的配置文件的例子.
目前我的应用程序使用log4net来记录错误,web.config为此如下:
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="c:/paypal/logs/gateway.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="FileAppender" />
</root>
</log4net>
Run Code Online (Sandbox Code Playgroud)
但是,问题在于每天都会记录日志 gateway.log
有没有人知道使用log4net每天拥有不同日志文件的方法?
理想情况下,我不希望web.config每天使用计划任务手动编辑.
在普通的ASP.NET Web表单站点中,我将使用web.configs"appsettings"将应用程序设置数据添加到站点.但是,使用MVC 3时,我无法以这种方式检索设置值.
首先,有2个web.config文件.一个位于站点的根目录中,第二个列在"视图"区域中.我假设我想将我的appsettings信息放在root web.config文件中,对吗?(将其置于其他视图下似乎会产生错误,指出"AppSettings"每个Web应用程序只能出现一次.)
当我尝试检索它时(C#:System.Configuration.ConfigurationManager.AppSettings ["SettingName"])我得到一个空白或空/ null返回值.我究竟做错了什么?
我应该提一下,我实际上是在模型区域下的类文件中检索此信息,以获取使用get的模型的特定值集; 组;.我有可能不允许在模特中这样做吗?
在Controller.cs中:
WindowsLiveConnect.ServiceConfiguration WLSC = new WindowsLiveConnect.ServiceConfiguration();
ViewBag.ClientID = SC.ClientID; // This returns empty
Run Code Online (Sandbox Code Playgroud)
在web.config中
...
<appSettings>
<add key="webpages:Version" value="1.0.0.0"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
<add key="ClientID" value="0000000040062A3F" />
<add key="ClientSecret" value="SUPERSECRETPASSWORD" />
<add key="RedirectURL" value="http%3A%2F%2Fwww.quilnet.com" />
</appSettings>
...
Run Code Online (Sandbox Code Playgroud)
在Model.cs文件中:
public class ServiceConfiguration
{
private string clientid;
private string clientsecret;
private string redirecturl;
public string ClientID
{
get { return clientid; }
set
{
clientid = System.Configuration.ConfigurationManager.AppSettings["ClientID"];
}
}
public …Run Code Online (Sandbox Code Playgroud) 我目前正在使用log4net构建一个ASP.Net-MVC应用程序进行日志记录,但是记录器似乎只是随机停止.它会愉快地记录一段时间,然后停止,然后在一段时间后再次启动.我甚至不确定是什么让它恢复记录.我不是在谈论丢失的一些消息 - 有时它会消失很长一段时间,比如一个小时左右.
为什么会这样停下来开始?我应该如何正确配置它,以便它不会随意停止?
这是我的配置:
<log4net debug="true">
<appender name="RollingLogFileAppender"
type="log4net.Appender.RollingFileAppender">
<file value="..\Logs\\CurrentLog.txt" />
<appendToFile value="true" />
<datePattern value="yyyyMMdd" />
<rollingStyle value="Date" />
<filter type="log4net.Filter.LevelRangeFilter">
<acceptOnMatch value="true" />
<levelMin value="INFO" />
<levelMax value="FATAL" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern
value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="RollingLogFileAppender" />
</root>
Run Code Online (Sandbox Code Playgroud)
我在我的ASP.NET MVC3项目中使用log4net,但所有日志属性,如IsDebugEnabled== false
在我的AssemblyInfo中,我有:
[assembly: XmlConfigurator(Watch = true)]
Run Code Online (Sandbox Code Playgroud)
在我的日志课中,我有
public Log4NetLogger()
{
log4net.Config.XmlConfigurator.Configure();
Logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
}
Run Code Online (Sandbox Code Playgroud)
我在Web.Config中的相关配置是:
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=152368
-->
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/>
</sectionGroup>
</configSections>
<log4net debug="false">
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="100" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="{removed}" />
<commandText value="INSERT INTO Logging ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, …Run Code Online (Sandbox Code Playgroud) 我试图在Visual Studio 2005的ASP.NET应用程序中使用log4net.我已经声明了一个logger实例,如下所示:
Private Shared ReadOnly log As ILog = LogManager.GetLogger("")
Run Code Online (Sandbox Code Playgroud)
我试图以下列方式使用它:
If log.IsDebugEnabled Then
log.Debug("Integration Services Constructed")
End If
Run Code Online (Sandbox Code Playgroud)
这是我的配置:
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingFileAppender" />
</root>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="..\\logs\\logfile.log"/>
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="1MB"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
</log4net>
Run Code Online (Sandbox Code Playgroud)
不幸的是,log.IsDebugEnabled总是假的.
如何配置log4net以便我只能记录调试消息?
当我想检查页面中是否存在元素时.这两个检查是否相同?有没有更好的更紧凑的方式来检查存在?
如果我要检查value == ''.这也可以包含在此检查中吗?
我的bin目录中有以下文件Log4net.config:
<?xml version="1.0" encoding="utf-8" ?>
<log4net xmlns="urn:log4net">
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<param name="file" value="MyLogFile.log"/>
<param name="appendToFile" value="false"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date (%logger) [%5level] - %message" />
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date (%logger) [%5level] - %message" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="FileAppender" />
<appender-ref ref="ConsoleAppender"/>
</root>
<logger name="NHibernate" additivity="false">
<level value="WARN"/>
</logger>
</log4net>
Run Code Online (Sandbox Code Playgroud)
以及AssemblyInfo.cs文件中的以下代码:
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyTitle("My Project")]
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4net.config", Watch = true)]
Run Code Online (Sandbox Code Playgroud)
当我运行程序时,我得到以下log4net调试输出: …
我为log4net配置了两个相同的项目.一个项目记录正常; 但是,另一个根本没有记录.
将Logger在不登录的回报项目IsFatalEnabled = false,IsErrorEnabled = false,IsWarnEnabled = false,IsInforEnabled = false和IsDebugEnabled = false.
我已经从一个项目复制并粘贴到另一个项目中,完全替换了文件并尝试删除所有空格.
什么可能导致一个项目没有正确地从app.config读取正确的级别?
的app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="logfile.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date: %-5level – %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="FileAppender" />
</root>
</log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)
Program.cs中
using log4net;
class Program
{
private static readonly ILog Log …Run Code Online (Sandbox Code Playgroud) 我正在使用RollingFileAppender和大小的rollingStyle.默认情况下,它会创建带有编号扩展名的备份文件,这让我感到疯狂.是否可以更改它以便始终使用已定义的扩展名(例如.txt或.log)并将数字作为文件名的一部分插入?
例如:
myapp.log
myapp.1.log
myapp.2.log
myapp.3.log
这是我目前的配置:
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="myapp.log"/>
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<maximumFileSize value="1MB"/>
<maxSizeRollBackups value="10"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{ISO8601} [%3thread] %-5level %logger{3}: %message%newline" />
</layout>
</appender>
Run Code Online (Sandbox Code Playgroud) log4net ×8
c# ×3
logging ×2
.net ×1
asp.net-mvc ×1
debugging ×1
dom ×1
javascript ×1
jquery ×1
vb.net ×1