-
Notifications
You must be signed in to change notification settings - Fork 0
LogReceiverService target
Sends log messages to a NLog Receiver Service (using WCF or Web Services).
Supported in .NET, Silverlight, Compact Framework and Mono. ##Configuration Syntax
<targets>
<target xsi:type="LogReceiverService"
name="String"
endpointConfigurationName="String"
endpointAddress="String"
useBinaryEncoding="Boolean"
clientId="Layout"
includeEventProperties="Boolean">
<parameter layout="Layout" name="String" type="System.Type"/><!-- repeated -->
</target>
</targets>
Read more about using the Configuration File. ##Parameters ###General Options name - Name of the target. ###Connection Options endpointConfigurationName - Name of the endpoint configuration in WCF configuration file.
endpointAddress - Endpoint address. Required. ###Payload Options useBinaryEncoding - Indicates whether to use binary message encoding. Boolean
parameters - The list of parameters. Collection
Each collection item is represented by <parameter /> element with the following attributes:
- layout - Layout that should be use to calcuate the value for the parameter. Layout Required.
- name - Name of the parameter.
- type - Type of the parameter.System.Type
clientId - Client ID. Layout
includeEventProperties - Indicates whether to include per-event properties in the payload sent to the server. Boolean
##Examples ###Passing Parameters Parameters are passed to the WCF LogReceiverService target using one or more configuration lines such as:
<parameter name="MyParameter" layout="My Value!" />
<parameter name="nlogdir" layout="${nlogdir}" />
These parameters are passed over the network to the service and can be accessed by emitting events from your receiver application.
###Application for receiving events
namespace MyLogReceiverApp
{
using System;
using NLog;
using NLog.LogReceiverService;
/// <summary>
/// Log service server object that logs messages.
/// </summary>
public class LogReceiverServer : ILogReceiverServer
{
public void ProcessLogMessages(NLogEvents nevents)
{
var events = nevents.ToEventInfo("Client.");
Console.WriteLine("in: {0} {1}", nevents.Events.Length, events.Count);
foreach (var ev in events)
{
var logger = LogManager.GetLogger(ev.LoggerName);
logger.Log(ev);
}
}
}
}
The line:
logger.Log(ev);
emits each event to the appropriate targets defined in the server side NLog.config file.
###Accessing Custom Values On the server side NLog.config file, you may use the ${event-context} layout renderer to access any parameters passed from the client side config. A line such as:
<target name="c" xsi:type="ColoredConsole" layout="testing ${event-context:item=MyParameter}" />
would print to the console:
testing My Value!
- Search in documentation
- Getting started
- Examples
- External articles and tutorials
- FAQ
- Platform support
- Advanced Configuration file options
- Filtering log messages
- [Using Time Sources](Time Source)
- Visual Studio support
- Who is using NLog
- [Write custom extensions](Extending NLog)