Files
xModels/Base/XBaseClass.cs
T
2024-01-25 04:37:38 +03:30

101 lines
2.7 KiB
C#

using System;
using Microsoft.Extensions.Logging;
using xCommons.Extensions;
using xExceptions.Constants;
namespace xModels.Base {
/// <summary>
/// a Base class which carry required things as a Father for it's childs ...
/// </summary>
public abstract class XBaseClass {
//
#region Properties ...
/// <summary>
/// LogTag which Specified for this class ...
/// </summary>
private readonly string LOG_TAG;
/// <summary>
/// logger instance ...
/// </summary>
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 ...
/// <summary>
/// Extract Prepared Log MEssage ...
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
protected virtual string GetLogMessage (string message) {
//
// Prepare Log Message ...
message = $"{LOG_TAG} => {message}";
return message;
}
/// <summary>
/// Logging specific Message ...
/// </summary>
/// <param name="message"></param>
/// <param name="logLevel"></param>
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
);
}
/// <summary>
/// Logging specific Message to Console ...
/// </summary>
/// <param name="message"></param>
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
}
}