<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<!--log4写日志-->
<log4net>
<!--文本日志配置-->
<appender name="FileLogConfig" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="./Log/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy"\\"yyyy-MM-dd".log"" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<!--时间,线程ID,日志级别,日志对象名称,行号,内容-->
<param name="ConversionPattern" value="%date [%thread] %-5p %class {%line} - %m%n--%property{Operand}--%date{yyyy'-'MM'-'dd HH':'mm':'ss}" />
<param name="Header" value=" ----------------------错误开始-------------------------- " />
<param name="Footer" value=" ----------------------错误结束-------------------------- " />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<!--设置插入等级-->
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="WARN" />
</filter>
</appender>
<!--数据库日志配置-->
<appender name="SqlLogConfig" 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="Database=ErpDB;Server=192.168.3.63;uid=erpUser;pwd=kfzj2013;" />
<commandText value="INSERT INTO T_SysLog([Log_Id],[Log_Time],[Log_Thread],[Log_Level],[Log_Class],[Log_Message],[Log_Exception],[Log_DepId],[Log_ServerId]) VALUES (NEWID(),@Log_Time,@Log_Thread,@Log_Level,@Log_Class,@Log_Message,@exception,@Operand,@IP)" />
<parameter>
<parameterName value="@Log_Time" />
<dbType value="DateTime" />
<layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss}" />
</parameter>
<parameter>
<parameterName value="@Log_Thread" />
<dbType value="String" />
<size value="200" />
<layout type="log4net.Layout.PatternLayout" value="%thread" />
</parameter>
<parameter>
<parameterName value="@Log_Level" />
<dbType value="String" />
<size value="200" />
<layout type="log4net.Layout.PatternLayout" value="%level" />
</parameter>
<parameter>
<parameterName value="@Log_Class" />
<dbType value="String" />
<size value="200" />
<layout type="log4net.Layout.PatternLayout" value="%class" />
</parameter>
<parameter>
<parameterName value="@Log_Message" />
<dbType value="String" />
<size value="3000" />
<layout type="log4net.Layout.PatternLayout" value="%message" />
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
<!--int类型 参数1-->
<parameter>
<parameterName value="@Operator" />
<dbType value="Int16" />
<layout type="Erp.Views.ReflectionLayout">
<conversionPattern value="%property{Operator}" />
</layout>
</parameter>
<!--字符串类型 参数2 当前作为“部门编号”使用-->
<parameter>
<parameterName value="@Operand" />
<dbType value="Int16" />
<layout type="Erp.Views.ReflectionLayout">
<conversionPattern value="%property{Operand}" />
</layout>
</parameter>
<!--int类型 参数3-->
<parameter>
<parameterName value="@ActionType" />
<dbType value="Int16" />
<layout type="Erp.Views.ReflectionLayout">
<conversionPattern value="%property{ActionType}" />
</layout>
</parameter>
<!--字符串类型 参数4 当前作为“服务器ID”使用-->
<parameter>
<parameterName value="@IP" />
<dbType value="Int16" />
<layout type="Erp.Views.ReflectionLayout">
<conversionPattern value="%property{IP}" />
</layout>
</parameter>
<!--字符串类型 参数5-->
<parameter>
<parameterName value="@Browser" />
<dbType value="Int16" />
<layout type="Erp.Views.ReflectionLayout">
<conversionPattern value="%property{Browser}" />
</layout>
</parameter>
<!--字符串类型 参数6-->
<parameter>
<parameterName value="@MachineName" />
<dbType value="Int16" />
<layout type="Erp.Views.ReflectionLayout">
<conversionPattern value="%property{MachineName}" />
</layout>
</parameter>
<filter type="log4net.Filter.LevelRangeFilter">
<!--设置插入等级-->
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
<logger name="ReflectionLayoutMin">
<level value="ALL" />
<appender-ref ref="FileLogConfig" />
</logger>
<logger name="ReflectionLayoutMax">
<level value="DEBUG"/>
<appender-ref ref="SqlLogConfig"/>
<appender-ref ref="FileLogConfig"/>
</logger>
</log4net>
</configuration>
调用端:
IMyLog myLog = MyLogManager.GetLogger(“ReflectionLayoutMax”);
try
{
myLog.Error(1, "D032F2A4-FF53-440D-8216-13A235C9B679", 0, "这是全部参数测试", "192.168.3.4", "MyComputer", "Maxthon(MyIE2)Fans");
myLog.Debug(1, "D032F2A4-FF53-440D-8216-13A235C9B679", 0, "这是全部参数测试", "192.168.3.4", "MyComputer", "Maxthon(MyIE2)Fans");
myLog.Warn(1, "D032F2A4-FF53-440D-8216-13A235C9B679", 0, "这是全部参数测试", "192.168.3.4", "MyComputer", "Maxthon(MyIE2)Fans");
}
catch (Exception ec)
{
myLog.Debug("这是一个参数重载测试!");
}
其中IMyLog类是我扩展的参数类。。。哪位大神路过看看。。。拜谢。。。
上面你说 WPF 的不行,WinForm 的可以,下面你又说你的是 WinForm 的,有点乱。
你的同样的代码,到底是 WinForm 的行,还是 WPF 的行?
大哥 wpf的不行 不知道哪出错了
@点点星痕: 这就好比 1+1=2,你写在 Winform 里,它就等于 2,你写在 WPF 里它就不等于 2 了,你说奇怪不奇怪。所以,这种问题很好分析,但是好像你不是很喜欢写代码,如果是我的话,我会这么做:
1、建立两个项目,一个是 WPF ,一个是 Winform的,各添加一个 Button,然后各自添加 Click 事件处理方法;
2、两个项目的 App.Config,配置为一样,并且引用相同的 log4net 组件;
3、写一个 Log 函数:
void Log()
{
IMyLog myLog = MyLogManager.GetLogger(“ReflectionLayoutMax”);
myLog.Error(1, "D032F2A4-FF53-440D-8216-13A235C9B679", 0, "这是全部参数测试", "192.168.3.4", "MyComputer", "Maxthon(MyIE2)Fans");
};
4、在 WPF 和 Winform 各自的 Click 事件处理方法中调用一次 Log();
http://www.cnblogs.com/aehyok/archive/2013/05/07/3066010.html 我这个是没问题的,你可以进行对比一下。 你写不进去,有没有报什么错误。
<layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%thread"/><!--记录日志时的线程号--> </layout>
我记录的value属性都在conversionPattern节点下的。
<parameter>
<parameterName value="@log_thread"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread"/><!--记录日志时的线程号-->
</layout>
</parameter>
@aehyok: 没有报错 文件都可以写入 就是SQL 进不去。。。。?
@点点星痕: 你可以把我的先复制到你程序里面试试 我的我试过的没问题
@aehyok: 其实我做的wpf mvvm模式的 但是和winfrom一样啊 为啥winfrom都可以而wpf不行呢 是不是配置有问题?
@点点星痕: 看着好像也没啥大问题 你试过我的了吗
@aehyok: 嗯试过了 winfrom的可以 wpf的咋不行了了呢。。。?
@点点星痕: 这么奇怪哇