void Awake() { LoggingConfiguration config = new LoggingConfiguration(); List<TargetWithLayout> targets = new List<TargetWithLayout>(); for( int i=0; i<logTargets.Length; i++ ) { Type t = Type.GetType( logTargets[i] ); if( t == null ) { Debug.LogWarning( "Could not get logger target of type " + logTargets[i] ); continue; } TargetWithLayout target = System.Activator.CreateInstance( t ) as TargetWithLayout; if( target == null ) { Debug.LogError( "Couldn't instantiate logger: " + logTargets[i] ); continue; } target.Layout = new SimpleLayout( "[${logger}] ${message}" ); targets.Add( target ); } SplitGroupTarget splitTarget = new SplitGroupTarget( targets.ToArray() ); config.AddTarget( "Split Target", splitTarget ); LogManager.Configuration = config; for( int i=0; i<logSources.Length; i++ ) { string logName = logSources[i].name; LogLevel logLevel = ToLogLevel( logSources[i].logLevel ); AddRule( config, logName, logLevel, splitTarget ); } LogManager.Configuration = config; }
static void Main(string[] args) { FileTarget file1 = new FileTarget(); file1.FileName = "${basedir}/file1.txt"; FileTarget file2 = new FileTarget(); file2.FileName = "${basedir}/file2.txt"; SplitGroupTarget target = new SplitGroupTarget(); target.Targets.Add(file1); target.Targets.Add(file2); NLog.Config.SimpleConfigurator.ConfigureForTargetLogging(target, LogLevel.Debug); Logger logger = LogManager.GetLogger("Example"); logger.Debug("log message"); }
private static void SplitGroupSyncTest1inner(bool allEventsAtOnce) { var myTarget1 = new MyTarget(); var myTarget2 = new MyTarget(); var myTarget3 = new MyTarget(); var wrapper = new SplitGroupTarget() { Targets = { myTarget1, myTarget2, myTarget3 }, }; myTarget1.Initialize(null); myTarget2.Initialize(null); myTarget3.Initialize(null); wrapper.Initialize(null); List<Exception> exceptions = new List<Exception>(); var inputEvents = new List<LogEventInfo>(); for (int i = 0; i < 10; ++i) { inputEvents.Add(LogEventInfo.CreateNullEvent()); } int remaining = inputEvents.Count; var allDone = new ManualResetEvent(false); // no exceptions AsyncContinuation asyncContinuation = ex => { lock (exceptions) { exceptions.Add(ex); if (Interlocked.Decrement(ref remaining) == 0) { allDone.Set(); } } ; }; if (allEventsAtOnce) { wrapper.WriteAsyncLogEvents(inputEvents.Select(ev => ev.WithContinuation(asyncContinuation)).ToArray()); } else { for (int i = 0; i < inputEvents.Count; ++i) { wrapper.WriteAsyncLogEvent(inputEvents[i].WithContinuation(asyncContinuation)); } } allDone.WaitOne(); Assert.Equal(inputEvents.Count, exceptions.Count); foreach (var e in exceptions) { Assert.Null(e); } Assert.Equal(inputEvents.Count, myTarget1.WriteCount); Assert.Equal(inputEvents.Count, myTarget2.WriteCount); Assert.Equal(inputEvents.Count, myTarget3.WriteCount); for (int i = 0; i < inputEvents.Count; ++i) { Assert.Same(inputEvents[i], myTarget1.WrittenEvents[i]); Assert.Same(inputEvents[i], myTarget2.WrittenEvents[i]); Assert.Same(inputEvents[i], myTarget3.WrittenEvents[i]); } Exception flushException = null; var flushHit = new ManualResetEvent(false); wrapper.Flush(ex => { flushException = ex; flushHit.Set(); }); flushHit.WaitOne(); if (flushException != null) { Assert.True(false, flushException.ToString()); } Assert.Equal(1, myTarget1.FlushCount); Assert.Equal(1, myTarget2.FlushCount); Assert.Equal(1, myTarget3.FlushCount); }
public void SplitGroupSyncTest2() { var wrapper = new SplitGroupTarget() { // no targets }; wrapper.Initialize(null); List<Exception> exceptions = new List<Exception>(); // no exceptions for (int i = 0; i < 10; ++i) { wrapper.WriteAsyncLogEvent(LogEventInfo.CreateNullEvent().WithContinuation(exceptions.Add)); } Assert.Equal(10, exceptions.Count); foreach (var e in exceptions) { Assert.Null(e); } Exception flushException = new Exception("Flush not hit synchronously."); wrapper.Flush(ex => flushException = ex); if (flushException != null) { Assert.True(false, flushException.ToString()); } }
public void SplitGroupToStringTest() { var myTarget1 = new MyTarget(); var myTarget2 = new FileTarget("file1"); var myTarget3 = new ConsoleTarget("Console2"); var wrapper = new SplitGroupTarget() { Targets = { myTarget1, myTarget2, myTarget3 }, }; Assert.Equal("SplitGroup Target[(unnamed)](MyTarget, File Target[file1], Console Target[Console2])", wrapper.ToString()); }