${longdate}|${level:uppercase=true}|${logger}|${message}
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + To print the results, use any application that's able to receive messages over + TCP or UDP. NetCat is + a simple but very powerful command-line tool that can be used for that. This image + demonstrates the NetCat tool receiving log messages from Network target. +
+ ++ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will be very slow. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +
++ There are two specialized versions of the Network target: Chainsaw + and NLogViewer which write to instances of Chainsaw log4j viewer + or NLogViewer application respectively. +
+${longdate}|${level:uppercase=true}|${logger}|${message}
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ Condition | +Foreground Color | +Background Color | +
---|---|---|
level == LogLevel.Fatal | +Red | +NoChange | +
level == LogLevel.Error | +Yellow | +NoChange | +
level == LogLevel.Warn | +Magenta | +NoChange | +
level == LogLevel.Info | +White | +NoChange | +
level == LogLevel.Debug | +Gray | +NoChange | +
level == LogLevel.Trace | +DarkGray | +NoChange | +
+ To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+
+
+
+
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ ${basedir}/${level}.log
+ All
+ Caution: Enabling this option can considerably slow down your file
+ logging in multi-process scenarios. If only one process is going to
+ be writing to the file, consider setting
+ To set up the target in the configuration file, + use the following syntax: +
+
+ + The result is: +
+ ++ To set up the log target programmatically similar to above use code like this: +
+
,
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + Mail target works best when used with BufferingWrapper target + which lets you send multiple log messages in single mail +
++ To set up the buffered mail target in the configuration file, + use the following syntax: +
+
+ + To set up the buffered mail target programmatically use code like this: +
+
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ The result is a message box: +
+ ++ To set up the log target programmatically use code like this: +
+
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + The result is: +
+ To set up the target with coloring rules in the configuration file, + use the following syntax: +
+
+
+
+ + The result is: +
+ To set up the log target programmatically similar to above use code like this: +
+
+ ,
+
+
+ for RowColoring,
+
+
+ for WordColoring
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ The example web service that works with this example is shown below
+
+ + Asynchronous target wrapper allows the logger code to execute more quickly, by queueing + messages and processing them in a separate thread. You should wrap targets + that spend a non-trivial amount of time in their Write() method with asynchronous + target to speed up logging. +
++ Because asynchronous logging is quite a common scenario, NLog supports a + shorthand notation for wrapping all targets with AsyncWrapper. Just add async="true" to + the <targets/> element in the configuration file. +
+
+
+ ... your targets go here ...
+
+ ]]>
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ This example causes the messages to be written to server1, + and if it fails, messages go to server2.
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+ This example causes the messages not contains the string '1' to be ignored.
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+ + This example works like this. If there are no Warn,Error or Fatal messages in the buffer + only Info messages are written to the file, but if there are any warnings or errors, + the output includes detailed trace (levels >= Debug). You can plug in a different type + of buffering wrapper (such as ASPNetBufferingWrapper) to achieve different + functionality. +
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+ This example causes the messages to be written to either file1.txt or file2.txt + chosen randomly on a per-message basis. +
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+ This example causes each log message to be repeated 3 times.
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+ This example causes each write attempt to be repeated 3 times, + sleeping 1 second between attempts if first one fails.
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+ This example causes the messages to be written to either file1.txt or file2.txt. + Each odd message is written to file2.txt, each even message goes to file1.txt. +
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+ This example causes the messages to be written to both file1.txt or file2.txt +
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + To print the results, use any application that's able to receive messages over + TCP or UDP. NetCat is + a simple but very powerful command-line tool that can be used for that. This image + demonstrates the NetCat tool receiving log messages from Network target. +
+ ++ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will be very slow. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +
++ There are two specialized versions of the Network target: Chainsaw + and NLogViewer which write to instances of Chainsaw log4j viewer + or NLogViewer application respectively. +
+${longdate}|${level:uppercase=true}|${logger}|${message}
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ Condition | +Foreground Color | +Background Color | +
---|---|---|
level == LogLevel.Fatal | +Red | +NoChange | +
level == LogLevel.Error | +Yellow | +NoChange | +
level == LogLevel.Warn | +Magenta | +NoChange | +
level == LogLevel.Info | +White | +NoChange | +
level == LogLevel.Debug | +Gray | +NoChange | +
level == LogLevel.Trace | +DarkGray | +NoChange | +
+ To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+
+
+
+
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ ${basedir}/${level}.log
+ All
+ Caution: Enabling this option can considerably slow down your file
+ logging in multi-process scenarios. If only one process is going to
+ be writing to the file, consider setting
+ To set up the target in the configuration file, + use the following syntax: +
+
+ + The result is: +
+ ++ To set up the log target programmatically similar to above use code like this: +
+
,
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + Mail target works best when used with BufferingWrapper target + which lets you send multiple log messages in single mail +
++ To set up the buffered mail target in the configuration file, + use the following syntax: +
+
+ + To set up the buffered mail target programmatically use code like this: +
+
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ The result is a message box: +
+ ++ To set up the log target programmatically use code like this: +
+
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + The result is: +
+ To set up the target with coloring rules in the configuration file, + use the following syntax: +
+
+
+
+ + The result is: +
+ To set up the log target programmatically similar to above use code like this: +
+
+ ,
+
+
+ for RowColoring,
+
+
+ for WordColoring
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + This assumes just one target and a single rule. More configuration + options are described here. +
++ To set up the log target programmatically use code like this: +
+
+ The example web service that works with this example is shown below
+
+ + Asynchronous target wrapper allows the logger code to execute more quickly, by queueing + messages and processing them in a separate thread. You should wrap targets + that spend a non-trivial amount of time in their Write() method with asynchronous + target to speed up logging. +
++ Because asynchronous logging is quite a common scenario, NLog supports a + shorthand notation for wrapping all targets with AsyncWrapper. Just add async="true" to + the <targets/> element in the configuration file. +
+
+
+ ... your targets go here ...
+
+ ]]>
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+ + To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+ ${longdate}|${level:uppercase=true}|${logger}|${message}
+ This example causes the messages to be written to server1, + and if it fails, messages go to server2.
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+ This example causes the messages not contains the string '1' to be ignored.
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+ + This example works like this. If there are no Warn,Error or Fatal messages in the buffer + only Info messages are written to the file, but if there are any warnings or errors, + the output includes detailed trace (levels >= Debug). You can plug in a different type + of buffering wrapper (such as ASPNetBufferingWrapper) to achieve different + functionality. +
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+ This example causes the messages to be written to either file1.txt or file2.txt + chosen randomly on a per-message basis. +
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+ This example causes each log message to be repeated 3 times.
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+ This example causes each write attempt to be repeated 3 times, + sleeping 1 second between attempts if first one fails.
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+ This example causes the messages to be written to either file1.txt or file2.txt. + Each odd message is written to file2.txt, each even message goes to file1.txt. +
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+ This example causes the messages to be written to both file1.txt or file2.txt +
++ To set up the target in the configuration file, + use the following syntax: +
+
+ + The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +
+
+