NLog: рдирд┐рдпрдо рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░
рдкреБрд╖реНрдЯрд┐ рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ .NET рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП NLog рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдореМрдЬреВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдерд╛ рдХрд┐ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ NLog рдореЗрдВ рдирд┐рдпрдо рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
NLog рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
рдФрд░ рд╣рдо NLog рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреА рдереЛрдбрд╝реА рдпрд╛рдж рджрд┐рд▓рд╛рддреЗ рд╣реБрдП рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВрдЧреЗред рд╕рд░рд▓рддрдо рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдПрдХ XML рдлрд╝рд╛рдЗрд▓ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, NLog.config):
<?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <targets> <target name="target1" xsi:type="ColoredConsole" layout="Access Log|${level:uppercase=true}|${logger}|${message}"> <highlight-row condition="true" foregroundColor="red"/> </target> <target name="target2" xsi:type="ColoredConsole" layout="Common Log|${level:uppercase=true}|${logger}|${message}"> <highlight-row condition="true" foregroundColor="green"/> </target> <target name="target3" xsi:type="ColoredConsole" layout="Yellow Log|${level:uppercase=true}|${logger}|${message}"> <highlight-row condition="true" foregroundColor="yellow"/> </target> </targets> <rules> <logger name="*" minlevel="Warn" writeTo="target1,target2,target3" /> </rules> </nlog>
рдЖрдк рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЛрдб рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
LogManager.Configuration = new XmlLoggingConfiguration("NLog.config");
рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рд╣рдо рдирд┐рдпрдо рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдВрджреЗрд╢ рд░рд┐рд╕реАрд╡рд░ (рд▓рдХреНрд╖реНрдп) рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
<rules> <logger name="*" minlevel="Warn" writeTo="target1,target2,target3" /> </rules>
рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдирд┐рдпрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдХреМрди рд╕реЗ рд╕реНрддрд░ рд▓рд╛рдЧреВ рд╣реИрдВ:
<rules> <logger name="*" minlevel="Warn" writeTo="target1" /> <logger name="*" levels="Debug,Warn,Info" writeTo="target2" /> </rules>
рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдо рдХреЗ рд▓рд┐рдП рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
<rules> <logger name="*" minlevel="Info" writeTo="target1"> <filters defaultAction='Log'> <when condition="contains('${message}','Common')" action="Ignore" /> </filters> </logger> </rules>
рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдо рдиреЗрд╕реНрдЯреЗрдб рдирд┐рдпрдореЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
<rules> <logger name="*" minlevel="Info" writeTo="target1"> <logger name="*" minlevel="Warn" writeTo="target2" /> </logger> </rules>
рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдмрдирд╛рдирд╛
рдЬрдм рдЖрдк рдПрдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ,
var commonLogger = LogManager.GetLogger("Common");
NLog рдпрд╛ рддреЛ рдХреИрд╢ рд╕реЗ рдПрдХ рдореМрдЬреВрджрд╛ рд▓реЗрддрд╛ рд╣реИ рдпрд╛ рдПрдХ рдирдпрд╛ рдмрдирд╛рддрд╛ рд╣реИ ( рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ)ред рдмрд╛рдж рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓реЙрдЧрд░ рдХреЗ рд▓рд┐рдП рджрд┐рдП рдЧрдП рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рднреА рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдЗрдП рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЗрдЦреЗрдВред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рд░рд┐рд╕реАрд╡рд░реНрд╕ рдХреА рдПрдХ рдЕрд▓рдЧ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд▓реЙрдЧрд┐рдВрдЧ рд╕реНрддрд░ ( Trace
, Debug
, Info
, Warn
, Error
, Fatal
) рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рд┐рд▓реНрдЯрд░ ( рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ)ред рдЕрдм рдореИрдВ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпреЗ рд╢реНрд░реГрдВрдЦрд▓рд╛рдПрдВ рдХреИрд╕реЗ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВред
рдЗрди рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдореБрдЦреНрдп рд╡рд┐рдзрд┐ LogFactory рд╡рд░реНрдЧ рдХрд╛ GetTargetsByLevelForLogger рд╣реИ ред рдпрд╣ рдЗрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред NLog рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рднреА рдирд┐рдпрдо рдмрджрд▓реЗ рдореЗрдВ рдЪреБрдиреЗ рдЧрдП рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдпрдо рдирд╛рдо рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рдХреЗ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдирд┐рдпрдо рдореЗрдВ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╣рдо рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
*
- рдкрд╛рддреНрд░реЛрдВ рдХрд╛ рдПрдХ рдордирдорд╛рдирд╛ рдХреНрд░рдо?
- рдХреЛрдИ рдПрдХрд▓ рдЪрд░рд┐рддреНрд░
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдирд┐рдпрдо рдирд╛рдо ' *
' рдХрд┐рд╕реА рднреА рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рдХреЗ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдФрд░ ' Common*
' рдЙрди рд╕рднреА рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдХреЗ рдирд╛рдо ' Common
' рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред
рдпрджрд┐ рдирд┐рдпрдо рдХрд╛ рдирд╛рдо рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рдХреЗ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдирд┐рдпрдо рдЗрд╕рдореЗрдВ рджрд┐рдП рдЧрдП рд╕рднреА рдирд┐рдпрдореЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, GetTargetsByLevelForLogger
рд╡рд┐рдзрд┐ рдЙрди рд╕рднреА рд▓реЙрдЧрд┐рдВрдЧ рд╕реНрддрд░реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдпрд╣ рдирд┐рдпрдо рд╕рдХреНрд╖рдо рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП, NLog рдЗрд╕ рдирд┐рдпрдо рдХреЗ рд▓рд┐рдП рдлрд┐рд▓реНрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдзрд┐рдд рд░рд┐рд╕реАрд╡рд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдирд┐рдпрдо рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рднреА рд╕рдВрджреЗрд╢ рд░рд┐рд╕реАрд╡рд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рд░рд┐рд╕реАрд╡рд░ рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рдирд┐рдпрдо final
рд░реВрдк рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдирд╛рдо рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рдХреЗ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ NLog рдЗрд╕ рдирд┐рдпрдо рдХреЗ рд▓рд┐рдП рд╢рд╛рдорд┐рд▓ рд╕рднреА рд▓реЙрдЧрд┐рдВрдЧ рд╕реНрддрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдВрдЬреАрд░реЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рди рддреЛ рдиреЗрд╕реНрдЯреЗрдб рдирд┐рдпрдо рдФрд░ рди рд╣реА рдмрд╛рдж рдХреЗ рдирд┐рдпрдо рдЗрди рд░рд┐рд╕реАрд╡рд░ рдЪреЗрди рдореЗрдВ рдХреБрдЫ рднреА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЙрдирдХреА рд░рдЪрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣реЛ рдЪреБрдХреА рд╣реИ рдФрд░ рд╡реЗ рдирд╣реАрдВ рдмрджрд▓реЗрдВрдЧреЗред рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ:
<rules> <logger name="*" minlevel="Info" writeTo="target1" final="true"> <logger name="*" minlevel="Warn" writeTo="target2" /> </logger> </rules>
рдХреЛрдИ рд╕рдВрджреЗрд╢ target2
рддрдХ рдирд╣реАрдВ target2
ред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХреБрдЫ рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ:
<rules> <logger name="*" minlevel="Warn" writeTo="target1" final="true"> <logger name="*" minlevel="Info" writeTo="target2" /> </logger> </rules>
рдЪреВрдВрдХрд┐ рдмрд╛рд╣рд░реА рдирд┐рдпрдо Info
рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рд░рд┐рд╕реАрд╡рд░ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрд╛рд╣рд░реА рдирд┐рдпрдо рдкрд░ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧреАред рдЗрд╕рд▓рд┐рдП, Info
рд╕реНрддрд░ рд╡рд╛рд▓реЗ рд╕рднреА рд╕рдВрджреЗрд╢ target2
рдореЗрдВ рдЧрд┐рд░ target2
ред
рдЗрд╕ рдирд┐рдпрдо рд╕реЗ рд╕рднреА рд░рд┐рд╕реАрд╡рд░реНрд╕ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдЪреЗрди рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд┐рдзрд┐ рдПрдХ рд╣реА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд░реНрддрдорд╛рди рдирд┐рдпрдо рдХреЗ рд╕рднреА рдиреЗрд╕реНрдЯреЗрдб рдирд┐рдпрдореЛрдВ рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдореВрд▓ рдирд┐рдпрдо рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рд▓реЙрдЧрд┐рдВрдЧ рд╕реНрддрд░реЛрдВ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд╣реЛрддрд╛ рд╣реИред
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рддреИрдпрд╛рд░ рд╣реИред рдЗрд╕рдореЗрдВ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд╕рд╛рде рд░рд┐рд╕реАрд╡рд░ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

рдпрд╣ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдЖрдЗрдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рд╕рд╛рдзрд╛рд░рдг рдмрд╛рддреЛрдВ рд╕реЗред Logger
рд╡рд░реНрдЧ рдПрдХ IsEnabled
рд╡рд┐рдзрд┐ рдФрд░ рд╕рдВрдмрджреНрдз IsXXXEnabled
рдЧреБрдг ( IsDebugEnabled
, IsInfoEnabled
, ...) рд╣реИред рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡реЗ рдмрд╕ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рджрд┐рдП рдЧрдП рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рд░рд┐рд╕реАрд╡рд░ рдЪреЗрди рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд▓рд┐рдВрдХ рд╣реЛрддрд╛ рд╣реИ ( рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ)ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрднреА рднреА рдЗрди рдЧреБрдгреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд╕рдордЭрд╛рдПрдВ рдХрд┐ рдЬрдм рдЖрдк рдХрд┐рд╕реА рд╕рдВрджреЗрд╢ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЗ рд▓реЙрдЧрд┐рдВрдЧ рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рд░рд┐рд╕реАрд╡рд░ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд▓реЗрддрд╛ рд╣реИред рдлрд┐рд░ рд╡рд╣ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдЗрд╕ рдЪреЗрди рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП, рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд▓рд┐рдВрдХ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд░рд┐рд╕реАрд╡рд░ рдХреЛ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпреЗ рдирд┐рд░реНрдгрдп рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдореБрдЭреЗ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ NLog рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:
<rules> <logger name="*" minlevel="Info" writeTo="target1"> <filters defaultAction='Log'> <when condition="contains('${message}','Common')" action="Ignore" /> </filters> </logger> </rules>
рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдлрд┐рд▓реНрдЯрд░ рдореЗрдВ рдХреБрдЫ рдмреВрд▓рд┐рдпрди рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИред рдпрд╣рд╛рдВ рдЖрдк рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝рд┐рд▓реНрдЯрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП true
рдпрд╛ false
ред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╣реИ рдирд╣реАрдВред рдЙрдирдХреЗ рдХрд╛рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо FilterResult
рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдореВрд▓реНрдп рд╣реИред рдпрджрд┐ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реНрдерд┐рддрд┐ true
рдЬрд╛рддреА true
, рддреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдкрд░рд┐рдгрд╛рдо action
рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рди рдмрди рдЬрд╛рддрд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ Ignore
)ред рдпрджрд┐ рд╕реНрдерд┐рддрд┐ false
, рддреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдкрд░рд┐рдгрд╛рдо Neutral
рд╣реЛрдЧрд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдлрд╝рд┐рд▓реНрдЯрд░ рдпрд╣ рддрдп рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред
рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдВ рд░рд┐рд╕реАрд╡рд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреА рд╣реИ ред рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рд╕реАрд╡рд░ рдХреЗ рд▓рд┐рдП, GetFilterResult
рд╡рд┐рдзрд┐ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА GetFilterResult
рдХреА GetFilterResult
ред рдпрд╣ рдкрд╣рд▓реЗ рдлрд┐рд▓реНрдЯрд░ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рдЬреЛ рдХрд┐ Neutral
рдирд╣реАрдВ рд▓реМрдЯрд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдХреБрдЫ рдлрд╝рд┐рд▓реНрдЯрд░ Neutral
рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рдорд╛рди рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рдмрд╛рдж рдХреЗ рд╕рднреА рдлрд╝рд┐рд▓реНрдЯрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╕рднреА рдлрд╝рд┐рд▓реНрдЯрд░ Neutral
рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдВ? рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдорд╛рди рдирд┐рдпрдо рдХреЗ рд▓рд┐рдП filters
рддрддреНрд╡ рдХреЗ defaultAction
рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ defaultAction
рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреНрдпрд╛ рд╣реИ? рдЖрдк рд╕рд╣реА рд╣реИрдВ рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ Neutral
ред рдпрд╣реА рд╣реИ, рд╕рдВрдкреВрд░реНрдг рдлрд╝рд┐рд▓реНрдЯрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ Neutral
рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, NLog Log
рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╕рдВрджреЗрд╢ рд░рд┐рд╕реАрд╡рд░ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ ( рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ)ред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рд╣реЛрдЧрд╛, рдпрджрд┐ рдХреЛрдИ рдлрд╝рд┐рд▓реНрдЯрд░ Ignore
рдпрд╛ IgnoreFinal
, рддреЛ рд╕рдВрджреЗрд╢ рд░рд┐рд╕реАрд╡рд░ рдХреЛ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдкрд░рд┐рдгрд╛рдо Log
рдпрд╛ Log
LogFinal
, рддреЛ рд╕рдВрджреЗрд╢ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди Ignore
рдФрд░ IgnoreFinal
рдмреАрдЪ рдФрд░ Log
рдпрд╛ LogFinal
рдмреАрдЪ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ? рдпрд╣ рд╕рд░рд▓ рд╣реИред IgnoreFinal
рдФрд░ LogFinal
рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ LogFinal
NLog рд░рд┐рд╕реАрд╡рд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдмрд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдореЗрдВ рдирд┐рд╣рд┐рдд рд░рд┐рд╕реАрд╡рд░реЛрдВ рдХреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
NLog рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рд╕реЗ рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реА рдХрд┐ рдирд┐рдпрдо рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╣реИ