using System; using Microsoft.Extensions.Logging; using xCommons.Extensions; using xExceptions.Constants; namespace xModels.Base { /// /// a Base class which carry required things as a Father for it's childs ... /// public abstract class XBaseClass { // #region Properties ... /// /// LogTag which Specified for this class ... /// private readonly string LOG_TAG; /// /// logger instance ... /// private readonly ILogger logger; #endregion // #region Constructor ... public XBaseClass (ILoggerFactory loggerFactory) { // // Preparing Log Tag ... LOG_TAG = this.GetType ().Name; // Type classType = this.GetType (); logger = loggerFactory.CreateLogger (classType); } #endregion // #region Protected ... /// /// Extract Prepared Log MEssage ... /// /// /// protected virtual string GetLogMessage (string message) { // // Prepare Log Message ... message = $"{LOG_TAG} => {message}"; return message; } /// /// Logging specific Message ... /// /// /// protected virtual void LogMessage ( string message, LogLevel logLevel = LogLevel.Information ) { // // Validate Args ... if (message.IsNullOrEmpty ()) { throw XException.InvalidArgs .ToException (); } // // Prepare Log Message ... message = GetLogMessage (message); // // Logging Message ... logger.Log ( message: message, logLevel: logLevel ); } /// /// Logging specific Message to Console ... /// /// protected virtual void ConsoleMessage (string message) { // // Validate Args ... if (message.IsNullOrEmpty ()) { throw XException.InvalidArgs .ToException (); } // // Prepare Log Message ... message = GetLogMessage (message); // // Logging Message ... Console.WriteLine (message); } #endregion } }