private static void Main() { Logger.LogLevel = LoggingSettings.Settings.Level; var rootDir = LoggingSettings.Settings.DirPath; if (string.IsNullOrWhiteSpace(rootDir)) rootDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); var logEncoder = new XmlLogEncoder(); var byteWriter = new LazyStreamByteWriter(() => FileStreamFactory.CreateFileStream( Path.Combine(rootDir, Resources.SubdirectoryName))); Logger.AddLogWriter(new Lazy<ILogWriter>(() => new LogWriter(logEncoder, byteWriter))); // LogMsg message 1 Logger.Log(LogLevel.Error, "id-str1"); const string param = "param-str"; // LogMsg message 2 Logger.Log(LogLevel.Error, "id-str2", param, null); Fn(); }
private static void Main(string[] args) { var logEncoder = new XmlLogEncoder(); var byteWriter = new LazyStreamByteWriter(FileStreamFactory.CreateApplicationDataFileStream); var logWriter = new LogWriter(logEncoder, new[] {byteWriter}); Logger.AddLogWriter(logWriter); Logger.Log(LogLevel.Error, "message"); }
public void Log_message_and_all_stack_frames_are_encoded_if_frames_to_encode_is_negative() { const LogLevel level = LogLevel.Error; const string message = "Test Message"; var stackTrace = new StackTrace(true); const int framesToEncode = -1; var xmlLogEncoder = new XmlLogEncoder(); var bytes = xmlLogEncoder.EncodeLogMessage(level, message, stackTrace, framesToEncode); var stream = new MemoryStream(bytes); var lDocument = new XmlDocument(); using (var xmlReader = XmlReader.Create(stream, new XmlReaderSettings {ConformanceLevel = ConformanceLevel.Fragment})) { lDocument.Load(xmlReader); } var lRootElement = lDocument.FirstChild as XmlElement; Assert.IsNotNull(lRootElement); Assert.AreEqual(level.ToString().ToLower(), lRootElement.Name); Assert.IsTrue(lRootElement.HasAttribute(Resources.TimestampAttributeName)); // Check timestamp attribute contains a parseable datetime representation. // The actual value isn't important and will change each time the test is run anyway. DateTime datetime; Assert.IsTrue(DateTime.TryParse(lRootElement.GetAttribute(Resources.TimestampAttributeName), out datetime)); Assert.IsTrue(lRootElement.HasAttribute(Resources.MessageAttributeName)); Assert.AreEqual(message, lRootElement.GetAttribute(Resources.MessageAttributeName)); var frameCount = 0; foreach (XmlElement stackFrameElement in lRootElement) { ++frameCount; Assert.AreEqual(Resources.FrameElementName, stackFrameElement.Name); } Assert.AreEqual(stackTrace.FrameCount, frameCount); }
public void Log_message_and_n_stack_frames_are_encoded_if_frames_to_encode_is_n() { const LogLevel level = LogLevel.Error; const string message = "Test Message"; var stackTrace = new StackTrace(true); const int framesToEncode = 5; var xmlLogEncoder = new XmlLogEncoder(); var bytes = xmlLogEncoder.EncodeLogMessage(level, message, stackTrace, framesToEncode); var stream = new MemoryStream(bytes); var lDocument = new XmlDocument(); using (var xmlReader = XmlReader.Create(stream, new XmlReaderSettings {ConformanceLevel = ConformanceLevel.Fragment})) { lDocument.Load(xmlReader); } var lRootElement = lDocument.FirstChild as XmlElement; Assert.IsNotNull(lRootElement); Assert.AreEqual(framesToEncode, lRootElement.ChildNodes.Count); }