1. Referencing the log4net DLL file
2. Create the Log4net.config file and configure the file information
<?xml version="1.0"encoding="Utf-8"?><configuration> <!--author:gaobingbing--> <configSections> <section name="log4net"Type="log4net. Config.log4netconfigurationsectionhandler, Log4net"/> </configSections> <log4net> <!--write to database-<appender name="Adonetappender_mysql"Type="log4net. Appender.adonetappender"> <!--error queue data reached 5 to persist to database-<buffersize value="5"/> <param name="ConnectionType"Value="MySql.Data.MySqlClient.MySqlConnection, Mysql.data"/> <param name="ConnectionString"Value="Server=localhost;database=specialdb; Uid=sa; Pwd=sa;old Syntax=yes"/> <commandtext value="INSERT into Log_serviceslog (log_datetime,log_thread,log_level,log_logger,log_message) VALUES (@log_date, @ Thread, @log_level, @logger, @message)"/> <parameter> <parametername value="@log_date"/> <dbtype value="DateTime"/> <layout type="log4net. Layout.rawtimestamplayout"/> <!--<layout type="log4net. Layout.patternlayout"Value="%date{yyyy '-' mm '-' dd HH ': ' mm ': ' SS}"/>--> </parameter> <parameter> <parametername value="@thread"/> <dbtype value="String"/> <size value="255"/> <layout type="log4net. Layout.patternlayout"> <conversionpattern value="%thread"/> </layout> </parameter> <parameter> <parametername value="@log_level"/> <dbtype value="String"/> <size value=" -"/> <layout type="log4net. Layout.patternlayout"> <conversionpattern value="%level"/> </layout> </parameter> <parameter> <parametername value="@logger"/> <dbtype value="String"/> <size value="255"/> <layout type="log4net. Layout.patternlayout"> <conversionpattern value="%logger"/> </layout> </parameter> <parameter> <parametername value="@message"/> <dbtype value="String"/> <size value="4000"/> <layout type="log4net. Layout.patternlayout"> <conversionpattern value="%message"/> </layout> </parameter> <!--<parameter> <parametername value="@exception"/> <dbtype value="String"/> <size value=" -"/> <layout type="log4net. Layout.exceptionlayout"/> </parameter>--> </appender> <root> <level value=" All"/> <appender-ref ref="Adonetappender_mysql"/> </root> <logger name="*"> <level value=" All"/> <appender-ref ref="Adonetappender_mysql"/> </logger> </log4net></configuration>
3. Create a new customservicehostfactory under the project root and inherit the ServiceHostFactory override CreateServiceHost method
Customservicehost inheritance ServiceHost override Customservicehost method Start error log (reference System.ServiceModel.Activation required)
usingSystem;usingSystem.ServiceModel.Activation;usingSystem.ServiceModel;namespacetopicwcfservices{ Public classCustomservicehostfactory:servicehostfactory {protected OverrideServiceHost createservicehost (Type servicetype, uri[] baseaddresses) {Customservicehost Customservicehost=Newcustomservicehost (servicetype, baseaddresses); returnCustomservicehost; } } Public classCustomservicehost:servicehost { PublicCustomservicehost (Type servicetype,paramsuri[] baseaddresses):Base(ServiceType, baseaddresses) {log4net. Config.XmlConfigurator.Configure (); } protected Override voidapplyconfiguration () {Base. ApplyConfiguration (); } }}
4. In the AssemblyInfo.cs file, add
" Log4net.config " true)]
5. Create an error log record file
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingsystem.web; Public classtopicservicelog{//Get Instance Private StaticLog4net. ILog MyLogger =log4net. Logmanager.getlogger ("Adonetappender_mysql"); //error Level: Info Public Static voidInfo (stringmessage) {mylogger.info (message); } //error Level: Debug Public Static voidDebug (stringmessage) {mylogger.debug (message); } //error Level: Warn Public Static voidWarn (stringmessage) {mylogger.warn (message); } //error Level: Fatal Public Static voidFatal (stringmessage) {mylogger.fatal (message); } //fault level: Error Public Static voidError (stringmessage) {mylogger.error (message); }}
OK, end, tested can be used
WCF Configuration Log4net