Add reference log4net. DLL to the project. The latest version is 1.2.10.0. Execute configure ONCE during initialization. Log4net. config. xmlconfigurator . Configure (New fileinfo ("logconfig. xml"); declare log in the class to be used. Use typeof (Class Name) as a parameter. Private log4net. ilog log = log4net. logmanager. getlogger (typeof (someclass); Use: If (log. isdebugenabled) log. debug ("some message ");//... try {...} catch (exception ex) {log. error ("some error", ex );} ==================================== = The content of logconfig. XML is as follows: (the subject is configured in the official example, and there are spelling and format errors.) <? XML version = "1.0" encoding = "UTF-8"?>
<! -- This section contains the log4net configuration settings -->
<Log4net>
<! -- Define some output appenders -->
<Appender name = "rollinglogfileappender" type = "log4net. appender. rollingfileapp Ender ">
<File value = "rolling-log.txt"/>
<Appendtofile value = "true"/>
<Maxsizerollbackups value = "10"/>
<Maximumfilesize value = "10 MB"/>
<Rollingstyle value = "size"/>
<Staticlogfilename value = "true"/>
<Layout type = "log4net. layout. patternlayout">
<Header value = "[header] & amp; #13; & amp; #10;"/>
<Footer value = "[footer] & amp; #13; & amp; #10;"/>
<Conversionpattern value = "% date [% thread] %-5 level % logger [% NDC]-% message % newline"/>
</Layout>
</Appender>
<Appender name = "logfileappender" type = "log4net. appender. fileappender">
<File value = "log-file.txt"/>
<! -- Example Using environment variables in Params -->
<! -- <File value = "$ {TMP}/log-file.txt"/> -->
<Appendtofile value = "true"/>
<! -- An alternate output encoding can be specified -->
<! -- <Encoding value = "unicodefffe"/> -->
<Layout type = "log4net. layout. patternlayout">
<Header value = "[header] & amp; #13; & amp; #10;"/>
<Footer value = "[footer] & amp; #13; & amp; #10;"/>
<Conversionpattern value = "% date [% thread] %-5 level % logger [% NDC] & lt; % property {auth} & gt;-% message % newline"/>
</Layout>
<! -- Alternate layout using XML
<Layout type = "log4net. layout. xmllayout"/> -->
</Appender>
<Appender name = "leleappender" type = "log4net. appender. consoleappende R ">
<Layout type = "log4net. layout. patternlayout">
<Conversionpattern value = "% date [% thread] %-5 level % logger [% NDC] & lt; % property {auth} & gt;-% message % newline"/>
</Layout>
</Appender>
<! --
<Appender name = "netsendappender" type = "log4net. appender. netsendappende R ">
<Threshold value = "error"/>
<Server value = "square"/>
<Recipient value = "Nicko"/>
<Layout type = "log4net. layout. patternlayout">
<Conversionpattern value = "% date [% thread] %-5 level % logger [% NDC]-% message % newline"/>
</Layout>
</Appender>
-->
<! -- Example of how to configure the adonetappender
<Appender name = "adonetappender" type = "log4net. appender. adonetappender">
<Connectionstring value = "driver = {Microsoft Access Driver (*. mdb)}; DBQ = C:/work/cvs_root /Log4net-1.2/access. mdb; uid =; Pwd =; "/>
<Layout type ="
Log4net. layout. patternlayout ">
<Conversionpattern value = "insert into log ([date], [thread], [level], [Logger], [Message]) values ('% date',' % thread', '% level ',' % Logger ',' % message') "/>
</Layout>
</Appender>
-->
<! --
<Appender name = "A" type = "log4net. appender. forwardingappe Nder ">
<Threshold value = "Warn"/>
<Appender-ref = "leleappender"/>
</Appender>
<Appender name = "B" type = "log4net. appender. forwardingappe Nder ">
<Filter type = "log4net. Filter. levelrangefilter">
<Levelmin value = "debug"/>
<Levelmax value = "info"/>
</Filter>
<Appender-ref = "leleappender"/>
</Appender>
-->
<! -- Example of how to configure the adonetappender to connect to MS access -->
<! --
<Appender name = "adonetappender_access" type = "log4net. appender. adonetappender">
<Connectionstring value = "provider = Microsoft. Jet. oledb.4.0; Data Source = C:/work/cvs_root /Log4net-1.2/access. mdb; user id =; Password =; "/>
<Commandtext value = "insert into log ([date], [thread], [level], [Logger], [Message]) values (@ log_date, @ thread, @ log_level, @ logger, @ message) "/>
<Parameter>
<Parametername value = "@ log_date"/>
<Dbtype value = "string"/>
<Size value = "255"/>
<Layout type = "log4net. layout. patternlayout">
<Conversionpattern value = "% date"/>
</Param>
</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 = "50"/>
<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 = "1024"/>
<Layout type = "log4net. layout. patternlayout">
<Conversionpattern value = "% message"/>
</Layout>
</Parameter>
</Appender>
-->
<! -- Example of how to configure the adonetappender to connect to ms SQL Server -->
<! --
<Appender name = "adonetappender_sqlserver" type = "log4net. appender. adonetappender">
<Buffersize value = "1"/>
<Connectiontype value = "system. Data. sqlclient. sqlconnec Tion, system. Data, version = 1.0.3300.0, culture = neutral, publickeytoken = b77a5c561934e089 "/>
<Connectionstring value = "Data Source = sqlsvr; initial catalog = test_log4net; Integrated Security = false; persist Security info = true; user id = sa; Password = sa"/>
<Commandtext value = "insert into log ([date], [thread], [level], [Logger], [Message]) values (@ log_date, @ thread, @ log_level, @ logger, @ message) "/>
<Parameter>
<Parametername value = "@ log_date"/>
<Dbtype value = "datetime"/>
-->
<! --
<Layout type = "log4net. layout. patternlayout">
<Conversionpattern value = "% Date {yyyy '-'mm'-'dd hh': 'mm': 'ss'. 'fff}"/>
</Layout>
<Layout type = "log4net. layout. rawtimestamplayo Ut "/>
</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 = "50"/>
<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>
</Appender>
-->
<! -- Setup the root category, add the appenders and set the default level -->
<Root>
<Level value = "all"/>
<Appender-ref = "logfileappender"/>
<Appender-ref = "leleappender"/>
<Appender-ref = "rollinglogfileappender"/>
<! -- <Appender-ref = "adonetappender_sqlserver"/> -->
<! -- <Appender-ref = "netsendappender"/> -->
<! -- <Appender-ref = "A"/> -->
</Root>
<! -- Specify the level for some specific categories -->
<! --
<Logger name = "test. simpleclass">
<Level value = "error"/>
<Appender-ref = "rollinglogfileappender"/>
</Logger>
-->
</Log4net>