/* * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals. * Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; using System.ComponentModel.Composition; using System.Globalization; namespace QuantConnect.Logging { /// /// ILogHandler implementation that writes log output to result handler /// [PartNotDiscoverable] public class FunctionalLogHandler : ILogHandler { private const string DateFormat = "yyyyMMdd HH:mm:ss"; private readonly Action _debug; private readonly Action _trace; private readonly Action _error; /// /// Default constructor to handle MEF. /// public FunctionalLogHandler() { } /// /// Initializes a new instance of the class. /// public FunctionalLogHandler(Action debug, Action trace, Action error) { // saves references to the real console text writer since in a deployed state we may overwrite this in order // to redirect messages from algorithm to result handler _debug = debug; _trace = trace; _error = error; } /// /// Write error message to log /// /// The error text to log public void Error(string text) { if (_error != null) { _error(DateTime.Now.ToString(DateFormat, CultureInfo.InvariantCulture) + " ERROR " + text); } } /// /// Write debug message to log /// /// The debug text to log public void Debug(string text) { if (_debug != null) { _debug(DateTime.Now.ToString(DateFormat, CultureInfo.InvariantCulture) + " DEBUG " + text); } } /// /// Write debug message to log /// /// The trace text to log public void Trace(string text) { if (_trace != null) { _trace(DateTime.Now.ToString(DateFormat, CultureInfo.InvariantCulture) + " TRACE " + text); } } /// /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. /// /// 2 public void Dispose() { } } }