例如:客户端的登录,用户操作记录都记录到客户端的log日志中。而且还要支持多个线程想log文件中写日志。(这一步我已经实现了)。但是考虑到性能问题,所有我想用线程池来做。请问怎么做啊 。
解决方案 »
- C# 做3D显示的难不难,希望各位的帮助
- 200分。如何把动态控件 添加到TabControl控件里面?由于紧急!!分不在这帖!
- 下载C#100例后。。。
- 问一个关于字符串操作函数的问题
- *******各位高手帮忙---有个关于水晶报表10的问题!从水晶报表9到水晶报表10升级后出现报表显示问题!!在线等!~ 解决另外加分-----
- 怎么安装MSDN?
- 紧急求助,关于c#多线程的问题
- 请问,程序打包Debug与Release
- ERP 和 MRP II是什么意思?
- 对方提供java接口的示例,我想用C#实现,那位老大能提供下对应C#代码实现以下功能?
- C#如何操作可以由字母A得到B
- 想用C#弄一个爬虫程序。。。我是个崭新的刚破处的C#菜B
{ //
log4net.Config.XmlConfigurator.Configure( new System.IO.FileInfo( "log4net.config" ));
}
在这个项目对应的Assembly.cs文件中添加一行 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config" , Watch = true )]
这里有个地方需要注意如果我的主项目是纯粹的代码分离后的aspx/ascx文件, 不含cs文件,那么中需要在饱含cs文件的项目(比如common.web.csproj)文件中添加这两行代码举个例子解决方案如下:MySolution.Sln |-----common.Web.csproj(包含cs文件) |-----Business1.Web.csproj(包含cs文件,继承自common.Web.csproj) |-----Business********.Web.csproj(包含cs文件,继承自common.Web.csproj) |-----BusinessX.Web.csproj(包含cs文件,继承自common.Web.csproj) |-----MainWeb.csproj(不包含cs文件)此时, 只需要在 common.Web.csproj 中做以上动作就可以了!其他项目只需要引用 dll即可。 第三步:添加logn4net.confgi在主项目根目录下:与web.config同路径,之所以不写入web,config文件, 是因为这样可以单独修改调试部署,也就是非侵入式安装的思想。呵呵。内容大概如下: view plaincopy to clipboardprint?
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<!--Log4net Begin by Tony 2008.11.20-->
<log4net>
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
<bufferSize value="10" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="DATABASE=DBErrorLogs;SERVER=myserver;UID=user;PWD=pwdpwd;Connect Timeout=15;" />
<commandText value="INSERT INTO ErrorLog ([dtDate],[sThread],[sLevel],[sLogger],[sMessage],[sException]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="100" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%t" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="200" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%p" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="500" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="3000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%m" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
<!-- setup the root category, add the appenders and set the default level -->
<root>
<level value="WARN"/>
<level value="INFO"/>
<level value="DEBUG"/>
<level value="FINE"/>
<appender-ref ref="ADONetAppender" />
</root>
<!-- specify the level for some specific categories -->
<logger name="iNotes">
<level value="WARN"/>
<level value="INFO"/>
<level value="DEBUG"/>
<level value="FINE"/>
<appender-ref ref="ADONetAppender"/>
</logger>
<logger name="StellaLogger">
<level value="ALL"/>
<appender-ref ref="AdoNetAppender" />
</logger>
</log4net>
<!--Log4net End-->
</configuration>
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<!--Log4net Begin by Tony 2008.11.20-->
<log4net>
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
<bufferSize value="10" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="DATABASE=DBErrorLogs;SERVER=myserver;UID=user;PWD=pwdpwd;Connect Timeout=15;" />
<commandText value="INSERT INTO ErrorLog ([dtDate],[sThread],[sLevel],[sLogger],[sMessage],[sException]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="100" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%t" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="200" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%p" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="500" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="3000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%m" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
<!-- setup the root category, add the appenders and set the default level -->
<root>
<level value="WARN"/>
<level value="INFO"/>
<level value="DEBUG"/>
<level value="FINE"/>
<appender-ref ref="ADONetAppender" />
</root>
<!-- specify the level for some specific categories -->
<logger name="iNotes">
<level value="WARN"/>
<level value="INFO"/>
<level value="DEBUG"/>
<level value="FINE"/>
<appender-ref ref="ADONetAppender"/>
</logger>
<logger name="StellaLogger">
<level value="ALL"/>
<appender-ref ref="AdoNetAppender" />
</logger>
</log4net>
<!--Log4net End-->
</configuration>