Пример #1
0
        protected override void Write(LogWriteContext context, LogEventInfo entry)
        {
            var message = Layout.GetFormattedString(context, entry);

            switch (entry.Level)
            {
            case LogLevel.Trace:
                MetroLogEventSource.Log.Trace(message);
                break;

            case LogLevel.Debug:
                MetroLogEventSource.Log.Debug(message);
                break;

            case LogLevel.Info:
                MetroLogEventSource.Log.Info(message);
                break;

            case LogLevel.Warn:
                MetroLogEventSource.Log.Warn(message);
                break;

            case LogLevel.Error:
                MetroLogEventSource.Log.Error(message);
                break;

            case LogLevel.Fatal:
                MetroLogEventSource.Log.Fatal(message);
                break;
            }
        }
Пример #2
0
        protected sealed override Task <LogWriteOperation> WriteAsyncCore(LogWriteContext context, LogEventInfo entry)
        {
            try
            {
                // add...
                List <LogEventInfo> toFlush = null;
                lock (_lock)
                {
                    Buffer.Add(entry);

                    // if...
                    if (Buffer.Count >= Threshold)
                    {
                        toFlush = new List <LogEventInfo>(Buffer);
                        Buffer  = new List <LogEventInfo>();
                    }
                }

                // anything to flush?
                if (toFlush != null)
                {
                    return(FlushAsync(context, toFlush));
                }
                else
                {
                    return(Task.FromResult(new LogWriteOperation(this, entry, true)));
                }
            }
            catch (Exception ex)
            {
                InternalLogger.Current.Error($"Failed to write to target '{this}'.", ex);
                return(Task.FromResult(new LogWriteOperation(this, entry, false)));
            }
        }
Пример #3
0
        protected override void Write(LogWriteContext context, LogEventInfo entry)
        {
            var message = Layout.GetFormattedString(context, entry);

            switch(entry.Level)
            {
                case LogLevel.Trace:
                    MetroLogEventSource.Log.Trace(message);
                    break;
                case LogLevel.Debug:
                    MetroLogEventSource.Log.Debug(message);
                    break;
                case LogLevel.Info:
                    MetroLogEventSource.Log.Info(message);
                    break;
                case LogLevel.Warn:
                    MetroLogEventSource.Log.Warn(message);
                    break;
                case LogLevel.Error:
                    MetroLogEventSource.Log.Error(message);
                    break;
                case LogLevel.Fatal:
                    MetroLogEventSource.Log.Fatal(message);
                    break;
            }
        }
Пример #4
0
        public override string GetFormattedString(LogWriteContext context, LogEventInfo info)
        {
            StringBuilder builder = new StringBuilder();
            builder.Append("Sequence: ");
            builder.Append(info.SequenceID);
            builder.Append("\r\nDate/time: ");
            builder.Append(info.TimeStamp.ToString(LogManager.DateTimeFormat));
            builder.Append("\r\nLevel: ");
            builder.Append(info.Level.ToString().ToUpper());
            builder.Append("\r\nThread: ");
            builder.Append(Environment.CurrentManagedThreadId);
            builder.Append("\r\nLogger: ");
            builder.Append(info.Logger);
            builder.Append("\r\n------------------------\r\n");
            builder.Append(info.Message);

            if(info.Exception != null)
            {
                builder.Append("\r\n------------------------\r\n");
                builder.Append(info.Exception);
            }

            builder.Append("\r\n------------------------\r\n");
            builder.Append("Session: ");
            builder.Append(context.Environment.ToJson());

            return builder.ToString();
        }
Пример #5
0
        protected internal override sealed Task<LogWriteOperation> WriteAsync(LogWriteContext context, LogEventInfo entry)
        {
            try
            {
                // add...
                List<LogEventInfo> toFlush = null;
                lock (_lock)
                {
                    this.Buffer.Add(entry);

                    // if...
                    if (this.Buffer.Count >= this.Threshold)
                    {
                        toFlush = new List<LogEventInfo>(this.Buffer);
                        this.Buffer = new List<LogEventInfo>();
                    }
                }

                // anything to flush?
                if (toFlush != null)
                    return FlushAsync(context, toFlush);
                else
                    return Task.FromResult(new LogWriteOperation(this, entry, true));
            }
            catch (Exception ex)
            {
                InternalLogger.Current.Error(string.Format("Failed to write to target '{0}'.", this), ex);
                return Task.FromResult(new LogWriteOperation(this, entry, false));
            }
        }
Пример #6
0
            public override string GetFormattedString(LogWriteContext context, LogEventInfo info)
            {
                var builder = new StringBuilder();

                builder.Append("[");
                builder.Append(info.TimeStamp.LocalDateTime.ToString("yyyy-MM-dd hh:mm:ss.fff ttt", CultureInfo.InvariantCulture));
                builder.Append("] [");
                builder.Append(Environment.CurrentManagedThreadId);
                builder.Append("] ");
                builder.Append(info.Level.ToString().ToUpper());
                builder.Append(": ");
                builder.Append(info.Logger);
                if (!info.Message.StartsWith("."))
                {
                    builder.Append(" ");
                }

                builder.Append(info.Message);
                if (info.Exception != null)
                {
                    builder.Append(" --> ");
                    builder.Append(info.Exception);

                    if (info.Exception.InnerException != null)
                    {
                        builder.Append(" inner --> ");
                        builder.Append(info.Exception.InnerException);
                    }
                }

                return(builder.ToString());
            }
Пример #7
0
        protected override async Task DoFlushAsync(LogWriteContext context, IEnumerable <LogEventInfo> toFlush)
        {
#if REF_ASSM
            await Task.Delay(0);

            throw new InvalidOperationException("Cannot use ref assm at runtime");
#else
            // create a json object...

            var env     = new LoggingEnvironment();
            var wrapper = new JsonPostWrapper(env, toFlush);
            var json    = wrapper.ToJson();

            // send...
            var client  = new HttpClient();
            var content = new StringContent(json);
            content.Headers.ContentType.MediaType = "text/json";

            // call...
            OnBeforePost(new HttpClientEventArgs(client));

            // send...
            await client.PostAsync(Url, content);
#endif
        }
Пример #8
0
        public override string GetFormattedString(LogWriteContext context, LogEventInfo info)
        {
            StringBuilder builder = new StringBuilder();

            builder.Append("Sequence: ");
            builder.Append(info.SequenceID);
            builder.Append("\r\nDate/time: ");
            builder.Append(info.TimeStamp.ToString(LogManagerBase.DateTimeFormat));
            builder.Append("\r\nLevel: ");
            builder.Append(info.Level.ToString().ToUpper());
            builder.Append("\r\nThread: ");
            builder.Append(Environment.CurrentManagedThreadId);
            builder.Append("\r\nLogger: ");
            builder.Append(info.Logger);
            builder.Append("\r\n------------------------\r\n");
            builder.Append(info.Message);

            if (info.Exception != null)
            {
                builder.Append("\r\n------------------------\r\n");
                builder.Append(info.Exception);
            }

            builder.Append("\r\n------------------------\r\n");
            builder.Append("Session: ");
            builder.Append(context.Environment.ToJson());

            return(builder.ToString());
        }
Пример #9
0
        protected override async Task DoFlushAsync(LogWriteContext context, IEnumerable <LogEventInfo> toFlush)
        {
            var logInformation = toFlush.ToList().Aggregate(string.Empty,
                                                            (current, eventInfo) => $"{current}{eventInfo.SequenceID}|{eventInfo.TimeStamp}|{eventInfo.Level}|{eventInfo.Logger}|{eventInfo.Message} {eventInfo.ExceptionWrapper?.AsString}{Environment.NewLine}");

            using (StreamWriter sourceStream = File.CreateText("newfile.txt")) // TODO pass fileName
            {
                await sourceStream.WriteAsync(logInformation);
            };
        }
Пример #10
0
        protected override void Write(LogWriteContext context, LogEventInfo entry)
        {
            if (_queue.Count == _maxLines)
            {
                _queue.Dequeue();
            }

            _queue.Enqueue(Layout.GetFormattedString(context, entry));

            Contract.Ensures(() => _queue.Count <= _maxLines);
        }
Пример #11
0
        protected override void Write(LogWriteContext context, LogEventInfo entry)
        {
#if REF_ASSM
            throw new InvalidOperationException("Cannot use ref assm at runtime");
#elif WINDOWS_PHONE_APP || WINDOWS_PHONE || NETFX_CORE || DOTNET
            var message = Layout.GetFormattedString(context, entry);
            Debug.WriteLine(message);
#else
            var message = Layout.GetFormattedString(context, entry);
            Trace.WriteLine(message);
#endif
        }
Пример #12
0
        public string GetFilename(LogWriteContext context, LogEventInfo entry)
        {
            var builder = new StringBuilder();

            builder.Append("Log");
            if (this.IncludeLevel)
            {
                builder.Append(" - ");
                builder.Append(entry.Level.ToString().ToUpper());
            }
            if (this.IncludeLogger)
            {
                builder.Append(" - ");
                builder.Append(entry.Logger);
            }
            if (this.IncludeTimestamp != FileTimestampMode.None)
            {
                bool date = ((int)this.IncludeTimestamp & (int)FileTimestampMode.Date) != 0;
                if (date)
                {
                    builder.Append(" - ");
                    builder.Append(entry.TimeStamp.ToString("yyyyMMdd"));
                }

                bool time = ((int)this.IncludeTimestamp & (int)FileTimestampMode.Time) != 0;
                if (time)
                {
                    if (date)
                    {
                        builder.Append(" ");
                    }
                    else
                    {
                        builder.Append(" - ");
                    }
                    builder.Append(entry.TimeStamp.ToString("HHmmss"));
                }
            }
            if (this.IncludeSession)
            {
                builder.Append(" - ");
                builder.Append(context.Environment.SessionId);
            }
            if (this.IncludeSequence)
            {
                builder.Append(" - ");
                builder.Append(entry.SequenceID);
            }

            // return...
            builder.Append(".log");
            return(builder.ToString());
        }
Пример #13
0
        protected override void Write(LogWriteContext context, LogEventInfo entry)
        {
#if REF_ASSM
            throw new InvalidOperationException("Cannot use ref assm at runtime");
#elif WINDOWS_PHONE_APP || WINDOWS_PHONE || NETFX_CORE || DOTNET
            var message = Layout.GetFormattedString(context, entry);
            Debug.WriteLine(message);
#else
            var message = Layout.GetFormattedString(context, entry);
            Trace.WriteLine(message);
#endif
        }
Пример #14
0
 protected sealed override Task<LogWriteOperation> WriteAsyncCore(LogWriteContext context, LogEventInfo entry)
 {
     try
     {
         Write(context, entry);
         return Task.FromResult(new LogWriteOperation(this, entry, true));
     }
     catch (Exception ex)
     {
         InternalLogger.Current.Error($"Failed to write to target '{this}'.", ex);
         return Task.FromResult(new LogWriteOperation(this, entry, false));
     }
 }
Пример #15
0
        async Task ILazyFlushable.LazyFlushAsync(LogWriteContext context)
        {
            List<LogEventInfo> toFlush = null;
            lock (_lock)
            {
                toFlush = new List<LogEventInfo>(this.Buffer);
                this.Buffer = new List<LogEventInfo>();
            }

            // flush...
            if(toFlush.Any())
                await DoFlushAsync(context, toFlush);
        }
Пример #16
0
 protected internal override sealed Task<LogWriteOperation> WriteAsync(LogWriteContext context, LogEventInfo entry)
 {
     try
     {
         Write(context, entry);
         return Task.FromResult(new LogWriteOperation(this, entry, true));
     }
     catch (Exception ex)
     {
         InternalLogger.Current.Error(string.Format("Failed to write to target '{0}'.", this), ex);
         return Task.FromResult(new LogWriteOperation(this, entry, false));
     }
 }
Пример #17
0
 protected override sealed Task <LogWriteOperation> WriteAsyncCore(LogWriteContext context, LogEventInfo entry)
 {
     try
     {
         Write(context, entry);
         return(Task.FromResult(new LogWriteOperation(this, entry, true)));
     }
     catch (Exception ex)
     {
         InternalLogger.Current.Error(string.Format("Failed to write to target '{0}'.", this), ex);
         return(Task.FromResult(new LogWriteOperation(this, entry, false)));
     }
 }
Пример #18
0
        sealed protected override async Task <LogWriteOperation> WriteAsyncCore(LogWriteContext context, LogEventInfo entry)
        {
            using (await _lock.LockAsync())
            {
                await EnsureInitialized();
                await CheckCleanupAsync();

                var filename = FileNamingParameters.GetFilename(context, entry);
                var contents = Layout.GetFormattedString(context, entry);

                return(await DoWriteAsync(filename, contents, entry));
            }
        }
Пример #19
0
        protected override async Task<LogWriteOperation> WriteAsyncCore(LogWriteContext context, LogEventInfo entry)
        {
            await EnsureInitialize();

            // cleanup
            await CheckCleanup();

            // ok...
            var conn = GetConnection();
            var session = await GetSessionAsync(context.Environment);
            await conn.InsertAsync(LogEventInfoItem.GetForInsert(context, entry, session));

            // return...
            return new LogWriteOperation(this, entry, true);
        }
Пример #20
0
        public string GetFilename(LogWriteContext context, LogEventInfo entry)
        {
            var builder = new StringBuilder();
            builder.Append("Log");
            if (this.IncludeLevel)
            {
                builder.Append(" - ");
                builder.Append(entry.Level.ToString().ToUpper());
            }
            if (this.IncludeLogger)
            {
                builder.Append(" - ");
                builder.Append(entry.Logger);
            }
            if (this.IncludeTimestamp != FileTimestampMode.None)
            {
                bool date = ((int)this.IncludeTimestamp & (int)FileTimestampMode.Date) != 0;
                if (date)
                {
                    builder.Append(" - ");
                    builder.Append(entry.TimeStamp.ToString("yyyyMMdd"));
                }

                bool time = ((int)this.IncludeTimestamp & (int)FileTimestampMode.Time) != 0;
                if(time)
                {
                    if(date)
                        builder.Append(" ");
                    else
                        builder.Append(" - ");
                    builder.Append(entry.TimeStamp.ToString("HHmmss"));
                }
            }
            if (this.IncludeSession)
            {
                builder.Append(" - ");
                builder.Append(context.Environment.SessionId);
            }
            if (this.IncludeSequence)
            {
                builder.Append(" - ");
                builder.Append(entry.SequenceID);
            }

            // return...
            builder.Append(".log");
            return builder.ToString();
        }
Пример #21
0
        protected override async Task <LogWriteOperation> WriteAsyncCore(LogWriteContext context, LogEventInfo entry)
        {
            await EnsureInitialize();

            // cleanup
            await CheckCleanup();

            // ok...
            var conn    = GetConnection();
            var session = await GetSessionAsync(context.Environment);

            await conn.InsertAsync(LogEventInfoItem.GetForInsert(context, entry, session));

            // return...
            return(new LogWriteOperation(this, entry, true));
        }
Пример #22
0
        async Task ILazyFlushable.LazyFlushAsync(LogWriteContext context)
        {
            List <LogEventInfo> toFlush = null;

            lock (_lock)
            {
                toFlush = new List <LogEventInfo>(Buffer);
                Buffer  = new List <LogEventInfo>();
            }

            // flush...
            if (toFlush.Any())
            {
                await DoFlushAsync(context, toFlush);
            }
        }
Пример #23
0
        async Task <LogWriteOperation> FlushAsync(LogWriteContext context, IEnumerable <LogEventInfo> toFlush)
        {
            try
            {
                await DoFlushAsync(context, toFlush);

                // this is a slight cheat in that we return the first one back, even though we may have
                // written more...
                return(new LogWriteOperation(this, toFlush, true));
            }
            catch (Exception ex)
            {
                InternalLogger.Current.Error($"Failed to flush for target '{this}'.", ex);
                return(new LogWriteOperation(this, toFlush, false));
            }
        }
Пример #24
0
        private async Task<LogWriteOperation> FlushAsync(LogWriteContext context, IEnumerable<LogEventInfo> toFlush)
        {
            try
            {
                await DoFlushAsync(context, toFlush);

                // this is a slight cheat in that we return the first one back, even though we may have
                // written more...
                return new LogWriteOperation(this, toFlush, true);
            }
            catch (Exception ex)
            {
                InternalLogger.Current.Error(string.Format("Failed to flush for target '{0}'.", this), ex);
                return new LogWriteOperation(this, toFlush, false);
            }
        }
Пример #25
0
        protected override async Task DoFlushAsync(LogWriteContext context, IEnumerable<LogEventInfo> toFlush)
        {
            // create a json object...

            var env = PlatformAdapter.Resolve<ILoggingEnvironment>();
            var wrapper = new JsonPostWrapper(env, toFlush);
            var json = wrapper.ToJson();

            // send...
            var client = new HttpClient();
            var content = new StringContent(json);
            content.Headers.ContentType.MediaType = "text/json";

            // call...
            this.OnBeforePost(new HttpClientEventArgs(client));

            // send...
            await client.PostAsync(this.Url, content);
        }
Пример #26
0
        protected override async Task<LogWriteOperation> WriteAsync(LogWriteContext context, LogEventInfo entry)
        {
            var folder = await FileSnapshotTarget.EnsureInitializedAsync();

            // cleanup...
            await this.CheckCleanupAsync(folder);

            // write...
            var filename = this.FileNamingParameters.GetFilename(context, entry);
            var file = await folder.CreateFileAsync(filename, CreationCollisionOption.OpenIfExists);

            // need to append a session header...

            // append...
            await FileIO.AppendTextAsync(file, this.Layout.GetFormattedString(context, entry) + "\r\n");

            // return...
            return new LogWriteOperation(this, entry, true);
        }
Пример #27
0
        internal static LogEventInfoItem GetForInsert(LogWriteContext context, LogEventInfo info, SessionHeaderItem session)
        {
            var item = new LogEventInfoItem()
            {
                SessionId = session.SessionId,
                DateTimeUtc = info.TimeStamp.UtcDateTime,
                SequenceId = info.SequenceID,
                Level = info.Level,
                Logger = info.Logger,
                Message = info.Message
            };

            // if...
            if (info.Exception != null)
                item.SetException(info.Exception);

            // return...
            return item;
        }
Пример #28
0
        public void TestEverythingOn()
        {
            var naming = new FileNamingParameters()
            {
                IncludeLevel     = true,
                IncludeLogger    = true,
                IncludeSequence  = true,
                IncludeSession   = true,
                IncludeTimestamp = FileTimestampMode.DateTime
            };

            // ok...
            var info = GetLogEventInfo();

            // check...
            var context  = new LogWriteContext();
            var filename = naming.GetFilename(context, info);

            Assert.Equal($"Log - INFO - foobar - {LogManager.GetDateTime() .ToString("yyyyMMdd HHmmss")} - {context.Environment.SessionId} - {info.SequenceID}.log", filename);
        }
Пример #29
0
        protected override async Task<LogWriteOperation> WriteAsync(LogWriteContext context, LogEventInfo entry)
        {
            var folder = await EnsureInitializedAsync();
            if (folder == null)
                return new LogWriteOperation(this, entry, false);

            // cleanup...
            await this.CheckCleanupAsync(folder);

            // create the file...
            var filename = this.FileNamingParameters.GetFilename(context, entry);
            var file = await folder.CreateFileAsync(filename).AsTask();
            
            // write...
            string buf = this.Layout.GetFormattedString(context, entry);
            await FileIO.WriteTextAsync(file, buf);

            // return...
            return new LogWriteOperation(this, entry, true);
        }
        public void TestEverythingOn()
        {
            var naming = new FileNamingParameters()
            {
                IncludeLevel = true,
                IncludeLogger = true,
                IncludeSequence = true,
                IncludeSession = true,
                IncludeTimestamp = FileTimestampMode.DateTime
            };

            // ok...
            var info = GetLogEventInfo();

            // check...
            var context = new LogWriteContext();
            var filename = naming.GetFilename(context, info);
            Assert.Equal(string.Format("Log - INFO - foobar - {0} - {1} - {2}.log", LogManager.GetDateTime().ToString("yyyyMMdd HHmmss"),
                context.Environment.SessionId, info.SequenceID), filename);
        }
Пример #31
0
        protected override async Task DoFlushAsync(LogWriteContext context, IEnumerable <LogEventInfo> toFlush)
        {
            // create a json object...

            var env     = PlatformAdapter.Resolve <ILoggingEnvironment>();
            var wrapper = new JsonPostWrapper(env, toFlush);
            var json    = wrapper.ToJson();

            // send...
            var client  = new HttpClient();
            var content = new StringContent(json);

            content.Headers.ContentType.MediaType = "text/json";

            // call...
            this.OnBeforePost(new HttpClientEventArgs(client));

            // send...
            await client.PostAsync(this.Url, content);
        }
Пример #32
0
        async Task <LogWriteOperation[]> LogInternal(LogLevel level, string message, object[] ps, Exception ex, bool doFormat)
        {
            try
            {
                if (_configuration.IsEnabled == false)
                {
                    return(EmptyOperations);
                }
                var targets = _configuration.GetTargets(level);
                if (!(targets.Any()))
                {
                    return(EmptyOperations);
                }

                // format?
                if (doFormat)
                {
                    message = string.Format(message, ps);
                }

                // create an event entry and pass it through...
                var entry = new LogEventInfo(level, Name, message, ex);

                // create a context...
                var context = new LogWriteContext();

                // gather the tasks...
                var writeTasks = from target in targets
                                 select target.WriteAsync(context, entry);

                // group...
                var group = await Task.WhenAll(writeTasks).ConfigureAwait(false);

                return(group);
            }
            catch (Exception logEx)
            {
                InternalLogger.Current.Error("Logging operation failed.", logEx);
                return(EmptyOperations);
            }
        }
Пример #33
0
        internal static LogEventInfoItem GetForInsert(LogWriteContext context, LogEventInfo info, SessionHeaderItem session)
        {
            var item = new LogEventInfoItem()
            {
                SessionId   = session.SessionId,
                DateTimeUtc = info.TimeStamp.UtcDateTime,
                SequenceId  = info.SequenceID,
                Level       = info.Level,
                Logger      = info.Logger,
                Message     = info.Message
            };

            // if...
            if (info.Exception != null)
            {
                item.SetException(info.Exception);
            }

            // return...
            return(item);
        }
Пример #34
0
        public override string GetFormattedString(LogWriteContext context, LogEventInfo info)
        {
            var builder = new StringBuilder();
            builder.Append(info.SequenceID);
            builder.Append("|");
            builder.Append(info.TimeStamp.ToString(LogManager.DateTimeFormat));
            builder.Append("|");
            builder.Append(info.Level.ToString().ToUpper());
            builder.Append("|");
            builder.Append(Environment.CurrentManagedThreadId);
            builder.Append("|");
            builder.Append(info.Logger);
            builder.Append("|");
            builder.Append(info.Message);
            if (info.Exception != null)
            {
                builder.Append(" --> ");
                builder.Append(info.Exception);
            }

            return builder.ToString();
        }
Пример #35
0
        protected sealed override async Task <LogWriteOperation> WriteAsyncCore(LogWriteContext context, LogEventInfo entry)
        {
            using (await _lock.LockAsync().ConfigureAwait(false))
            {
                await EnsureInitialized().ConfigureAwait(false);
                await CheckCleanupAsync().ConfigureAwait(false);

                var filename = FileNamingParameters.GetFilename(context, entry);
                var contents = Layout.GetFormattedString(context, entry);

                var sw = await GetOrCreateStreamWriterForFile(filename).ConfigureAwait(false);

                var op = await DoWriteAsync(sw, contents, entry);

                if (!KeepLogFilesOpenForWrite)
                {
                    sw.Dispose();
                }

                return(op);
            }
        }
Пример #36
0
        public override string GetFormattedString(LogWriteContext context, LogEventInfo info)
        {
            StringBuilder builder = new StringBuilder();

            builder.Append(info.SequenceID);
            builder.Append("|");
            builder.Append(info.TimeStamp.ToString(LogManagerBase.DateTimeFormat));
            builder.Append("|");
            builder.Append(info.Level.ToString().ToUpper());
            builder.Append("|");
            builder.Append(Environment.CurrentManagedThreadId);
            builder.Append("|");
            builder.Append(info.Logger);
            builder.Append("|");
            builder.Append(info.Message);
            if (info.Exception != null)
            {
                builder.Append(" --> ");
                builder.Append(info.Exception);
            }

            return(builder.ToString());
        }
Пример #37
0
        public void TestRegexEverythingOn()
        {
            var naming = new FileNamingParameters()
            {
                IncludeLevel     = true,
                IncludeLogger    = true,
                IncludeSequence  = true,
                IncludeSession   = true,
                IncludeTimestamp = FileTimestampMode.DateTime
            };

            // get...
            var regex = naming.GetRegex();

            // create...
            var info = GetLogEventInfo();

            // check...
            var context  = new LogWriteContext();
            var filename = naming.GetFilename(context, info);

            // check...
            Assert.True(regex.Match(filename).Success);
        }
Пример #38
0
        protected override async Task DoFlushAsync(LogWriteContext context, IEnumerable<LogEventInfo> toFlush)
        {
#if REF_ASSM
            await Task.Delay(0);
            throw new InvalidOperationException("Cannot use ref assm at runtime");
#else
            // create a json object...

            var env = new LoggingEnvironment();
            var wrapper = new JsonPostWrapper(env, toFlush);
            var json = wrapper.ToJson();

            // send...
            var client = new HttpClient();
            var content = new StringContent(json);
            content.Headers.ContentType.MediaType = "text/json";

            // call...
            OnBeforePost(new HttpClientEventArgs(client));

            // send...
            await client.PostAsync(Url, content);
#endif
        }
Пример #39
0
 protected abstract Task<LogWriteOperation> WriteAsyncCore(LogWriteContext context, LogEventInfo entry);
Пример #40
0
 internal async Task<LogWriteOperation> WriteAsync(LogWriteContext context, LogEventInfo entry)
 {
     return await WriteAsyncCore(context, entry).ConfigureAwait(false);
 }
Пример #41
0
 protected override void Write(LogWriteContext context, LogEventInfo entry)
 {
     Action(entry);
 }
Пример #42
0
 protected override void Write(LogWriteContext context, LogEventInfo entry)
 {
     var message = Layout.GetFormattedString(context, entry);
     Debug.WriteLine(message);
 }
Пример #43
0
        private Task<LogWriteOperation[]> LogInternal(LogLevel level, string message, object[] ps, Exception ex, bool doFormat)
        {
            try
            {
                if (_configuration.IsEnabled == false)
                    return EmptyOperations;
                var targets = _configuration.GetTargets(level);
                if (!(targets.Any()))
                    return EmptyOperations;

                // format?
                if (doFormat)
                    message = string.Format(message, ps);

                // create an event entry and pass it through...
                var entry = new LogEventInfo(level, Name, message, ex);

                // create a context...
                var context = new LogWriteContext();

                // gather the tasks...
                var writeTasks = from target in targets
                                 select target.WriteAsync(context, entry);

                // group...
                var group = Task.WhenAll(writeTasks);
                return group;
            }
            catch (Exception logEx)
            {
                InternalLogger.Current.Error("Logging operation failed.", logEx);
                return EmptyOperations;
            }
        }
Пример #44
0
        protected override void Write(LogWriteContext context, LogEventInfo entry)
        {
            var message = Layout.GetFormattedString(context, entry);

            _onMessage(message);
        }
Пример #45
0
 protected abstract void Write(LogWriteContext context, LogEventInfo entry);
Пример #46
0
        public void TestRegexEverythingOn()
        {
            var naming = new FileNamingParameters()
            {
                IncludeLevel = true,
                IncludeLogger = true,
                IncludeSequence = true,
                IncludeSession = true,
                IncludeTimestamp = FileTimestampMode.DateTime
            };

            // get...
            var regex = naming.GetRegex();

            // create...
            var info = GetLogEventInfo();

            // check...
            var context = new LogWriteContext();
            var filename = naming.GetFilename(context, info);
  
            // check...
            Assert.True(regex.Match(filename).Success);
        }
Пример #47
0
        sealed protected override async Task<LogWriteOperation> WriteAsyncCore(LogWriteContext context, LogEventInfo entry)
        {
            using (await _lock.LockAsync())
            {
                await EnsureInitialized();
                await CheckCleanupAsync();

                var filename = FileNamingParameters.GetFilename(context, entry);
                var contents = Layout.GetFormattedString(context, entry);

                return await DoWriteAsync(filename, contents, entry);
            }
        }
Пример #48
0
 protected override void Write(LogWriteContext context, LogEventInfo entry)
 {
     // broken...
     throw new NotImplementedException();
 }
Пример #49
0
 protected abstract Task DoFlushAsync(LogWriteContext context, IEnumerable <LogEventInfo> toFlush);
Пример #50
0
 protected internal abstract Task<LogWriteOperation> WriteAsync(LogWriteContext context, LogEventInfo entry);
Пример #51
0
 /// <summary>
 /// Returns the formatted log event.
 /// </summary>
 /// <param name="context">The logging context.</param>
 /// <param name="info">The log event for format.</param>
 /// <returns>The foramtted string.</returns>
 public abstract string GetFormattedString(LogWriteContext context, LogEventInfo info);
Пример #52
0
 public override string GetFormattedString(LogWriteContext context, LogEventInfo info)
 {
     return(string.Empty);
 }
Пример #53
0
 protected abstract void Write(LogWriteContext context, LogEventInfo entry);
 protected override void Write(LogWriteContext context, LogEventInfo entry)
 {
     Console.WriteLine(Layout.GetFormattedString(context, entry));
 }
Пример #55
0
 protected override void Write(LogWriteContext context, LogEventInfo entry)
 {
     NumWritten++;
     LastWritten = entry;
 }
Пример #56
0
 public override string GetFormattedString(LogWriteContext context, LogEventInfo info)
 {
     return string.Empty;
 }
Пример #57
0
 public override string GetFormattedString(LogWriteContext context, LogEventInfo info)
 {
     return Environment.CurrentManagedThreadId.ToString();
 }
Пример #58
0
 protected abstract Task DoFlushAsync(LogWriteContext context, IEnumerable<LogEventInfo> toFlush);