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
}
}