mirror of https://github.com/raandree/NTFSSecurity
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
253 lines
11 KiB
253 lines
11 KiB
using System;
|
|
using System.Diagnostics;
|
|
|
|
namespace Log
|
|
{
|
|
#region Log
|
|
|
|
namespace Log
|
|
{
|
|
public class ParameterCountMismatchArgumentCountException : Exception
|
|
{
|
|
public ParameterCountMismatchArgumentCountException()
|
|
: base() { }
|
|
|
|
public ParameterCountMismatchArgumentCountException(string message)
|
|
: base(message)
|
|
{ }
|
|
}
|
|
|
|
public class Log : Microsoft.VisualBasic.Logging.Log, IDisposable
|
|
{
|
|
public Log()
|
|
: base()
|
|
{
|
|
if (!string.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["LogPath"]))
|
|
{
|
|
string LogPath = System.Configuration.ConfigurationManager.AppSettings["LogPath"];
|
|
string LogName = System.Reflection.Assembly.GetCallingAssembly().GetName().Name;
|
|
DefaultFileLogWriter.CustomLocation = System.IO.Path.GetDirectoryName(LogPath);
|
|
DefaultFileLogWriter.BaseFileName = LogName;
|
|
DefaultFileLogWriter.Location = Microsoft.VisualBasic.Logging.LogFileLocation.Custom;
|
|
DefaultFileLogWriter.CustomLocation = LogPath;
|
|
}
|
|
else if (System.Reflection.Assembly.GetEntryAssembly() != null)
|
|
{
|
|
DefaultFileLogWriter.Location = Microsoft.VisualBasic.Logging.LogFileLocation.ExecutableDirectory;
|
|
}
|
|
|
|
DefaultFileLogWriter.Append = true;
|
|
DefaultFileLogWriter.AutoFlush = true;
|
|
DefaultFileLogWriter.Delimiter = ";";
|
|
DefaultFileLogWriter.MaxFileSize = 2621440000; //2500 MB
|
|
DefaultFileLogWriter.ReserveDiskSpace = 1048576000; //1000 MB
|
|
DefaultFileLogWriter.LogFileCreationSchedule = Microsoft.VisualBasic.Logging.LogFileCreationScheduleOption.Daily;
|
|
if (System.Configuration.ConfigurationManager.AppSettings["Debug"] == "true")
|
|
TraceSource.Switch.Level = SourceLevels.All;
|
|
else
|
|
TraceSource.Switch.Level = SourceLevels.Information;
|
|
|
|
WriteEntry("Starting log...");
|
|
WriteEntry("Log instance created");
|
|
}
|
|
|
|
public Log(string name)
|
|
: this()
|
|
{
|
|
DefaultFileLogWriter.BaseFileName = name;
|
|
}
|
|
|
|
public Log(string name, string logPath, SourceLevels level)
|
|
: this()
|
|
{
|
|
DefaultFileLogWriter.CustomLocation = System.IO.Path.GetDirectoryName(logPath);
|
|
DefaultFileLogWriter.BaseFileName = name;
|
|
DefaultFileLogWriter.Location = Microsoft.VisualBasic.Logging.LogFileLocation.Custom;
|
|
DefaultFileLogWriter.CustomLocation = logPath;
|
|
DefaultFileLogWriter.Append = true;
|
|
DefaultFileLogWriter.AutoFlush = true;
|
|
DefaultFileLogWriter.Delimiter = ";";
|
|
DefaultFileLogWriter.MaxFileSize = 2621440000; //2500 MB
|
|
DefaultFileLogWriter.ReserveDiskSpace = 1048576000; //1000 MB
|
|
DefaultFileLogWriter.LogFileCreationSchedule = Microsoft.VisualBasic.Logging.LogFileCreationScheduleOption.Daily;
|
|
TraceSource.Switch.Level = level;
|
|
|
|
WriteEntry("Starting log...");
|
|
WriteEntry("Log instance created");
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
WriteEntry("Log Class gets disposed.");
|
|
WriteEntry("Closing log...");
|
|
DefaultFileLogWriter.Close();
|
|
}
|
|
|
|
public void WriteFunctionEntry()
|
|
{
|
|
string message = string.Empty;
|
|
|
|
string callingMethod = new StackFrame(1, true).GetMethod().Name;
|
|
string callingClass = new StackFrame(1, true).GetMethod().ReflectedType.Name;
|
|
|
|
message = string.Format("{0} : {1}(", callingClass, callingMethod);
|
|
|
|
System.Reflection.ParameterInfo[] parameterInfos = new StackFrame(1, true).GetMethod().GetParameters();
|
|
foreach (System.Reflection.ParameterInfo parameterInfo in parameterInfos)
|
|
{
|
|
message += parameterInfo.ParameterType.Name + " " + parameterInfo.Name + ", ";
|
|
}
|
|
|
|
//remove the "," at the end of the line
|
|
if (message.EndsWith(", ")) { message = message.Substring(0, message.Length - 2); }
|
|
|
|
message += ") : entering...";
|
|
|
|
WriteEntry(message, TraceEventType.Verbose);
|
|
}
|
|
|
|
public void WriteFunctionEntry(params object[] args)
|
|
{
|
|
string message = string.Empty;
|
|
|
|
string callingMethod = new StackFrame(1, true).GetMethod().Name;
|
|
string callingClass = new StackFrame(1, true).GetMethod().ReflectedType.Name;
|
|
|
|
message = string.Format("{0} : {1}(", callingClass, callingMethod);
|
|
|
|
System.Reflection.ParameterInfo[] parameterInfos = new StackFrame(1, true).GetMethod().GetParameters();
|
|
if (parameterInfos.Length != args.Length)
|
|
{
|
|
throw new ParameterCountMismatchArgumentCountException();
|
|
}
|
|
|
|
int parameterIterator = 0;
|
|
foreach (System.Reflection.ParameterInfo parameterInfo in parameterInfos)
|
|
{
|
|
message += parameterInfo.ParameterType.Name + " " + parameterInfo.Name;
|
|
message += string.Format("={0}, ",
|
|
args[parameterIterator] != null ?
|
|
args[parameterIterator].ToString() :
|
|
"null");
|
|
parameterIterator++;
|
|
}
|
|
|
|
//remove the "," at the end of the line
|
|
if (message.EndsWith(", ")) { message = message.Substring(0, message.Length - 2); }
|
|
|
|
message += ") : entering...";
|
|
|
|
WriteEntry(message, TraceEventType.Verbose);
|
|
}
|
|
|
|
public void WriteFunctionExit()
|
|
{
|
|
string message = string.Empty;
|
|
|
|
string callingMethod = new StackFrame(1, true).GetMethod().Name;
|
|
string callingClass = new StackFrame(1, true).GetMethod().ReflectedType.Name;
|
|
|
|
message = string.Format("{0} : {1}(", callingClass, callingMethod);
|
|
|
|
System.Reflection.ParameterInfo[] parameterInfos = new StackFrame(1, true).GetMethod().GetParameters();
|
|
foreach (System.Reflection.ParameterInfo parameterInfo in parameterInfos)
|
|
{
|
|
message += parameterInfo.ParameterType.Name + " " + parameterInfo.Name + ", ";
|
|
}
|
|
|
|
//remove the "," at the end of the line
|
|
if (message.EndsWith(", ")) { message = message.Substring(0, message.Length - 2); }
|
|
|
|
message += ") : leaving...";
|
|
|
|
WriteEntry(message, TraceEventType.Verbose);
|
|
}
|
|
|
|
public void WriteFunctionExit(object returnValue)
|
|
{
|
|
string message = string.Empty;
|
|
|
|
string callingMethod = new StackFrame(1, true).GetMethod().Name;
|
|
string callingClass = new StackFrame(1, true).GetMethod().ReflectedType.Name;
|
|
|
|
message = string.Format("{0} : {1}(", callingClass, callingMethod);
|
|
|
|
System.Reflection.ParameterInfo[] parameterInfos = new StackFrame(1, true).GetMethod().GetParameters();
|
|
foreach (System.Reflection.ParameterInfo parameterInfo in parameterInfos)
|
|
{
|
|
message += parameterInfo.ParameterType.Name + " " + parameterInfo.Name + ", ";
|
|
}
|
|
|
|
//remove the "," at the end of the line
|
|
if (message.EndsWith(", ")) { message = message.Substring(0, message.Length - 2); }
|
|
|
|
message += ") : leaving... ReturnValue is " + returnValue.ToString();
|
|
|
|
WriteEntry(message, TraceEventType.Verbose);
|
|
}
|
|
|
|
public void WriteFunctionExitWithError(Exception ex)
|
|
{
|
|
string message = string.Empty;
|
|
string error = ex.GetType().Name;
|
|
if (!string.IsNullOrEmpty(error))
|
|
{
|
|
error += ": " + ex.Message;
|
|
}
|
|
|
|
string callingMethod = new StackFrame(1, true).GetMethod().Name;
|
|
string callingClass = new StackFrame(1, true).GetMethod().ReflectedType.Name;
|
|
|
|
message = string.Format("{0} : {1}(", callingClass, callingMethod);
|
|
|
|
System.Reflection.ParameterInfo[] parameterInfos = new StackFrame(1, true).GetMethod().GetParameters();
|
|
foreach (System.Reflection.ParameterInfo parameterInfo in parameterInfos)
|
|
{
|
|
message += parameterInfo.ParameterType.Name + " " + parameterInfo.Name + ", ";
|
|
}
|
|
|
|
//remove the "," at the end of the line
|
|
if (message.EndsWith(", ")) { message = message.Substring(0, message.Length - 2); }
|
|
|
|
message += ") : leaving with error '" + error + "'";
|
|
|
|
WriteEntry(message, TraceEventType.Error);
|
|
}
|
|
|
|
private new void WriteEntry(string message, TraceEventType severity)
|
|
{
|
|
message = string.Format("{0}:{1}:{2}.{3};{4}",
|
|
DateTime.Now.Hour,
|
|
DateTime.Now.Minute,
|
|
DateTime.Now.Second,
|
|
DateTime.Now.Millisecond,
|
|
message);
|
|
base.WriteEntry(message, severity);
|
|
}
|
|
|
|
private new void WriteEntry(string message)
|
|
{
|
|
WriteEntry(message, TraceEventType.Information);
|
|
}
|
|
|
|
public void WriteEntry(string message, TraceEventType severity, params object[] args)
|
|
{
|
|
string callingMethod = new StackFrame(1, true).GetMethod().Name;
|
|
string callingClass = new StackFrame(1, true).GetMethod().ReflectedType.Name;
|
|
|
|
message = string.Format(message, args);
|
|
string messageHeader = string.Format("{0} : {1}", callingClass, callingMethod);
|
|
message = string.Format("{0};{1}", messageHeader, message);
|
|
|
|
WriteEntry(message, severity);
|
|
}
|
|
|
|
private void WriteEntry(string message, params object[] args)
|
|
{
|
|
message = string.Format(message, args);
|
|
WriteEntry(message, TraceEventType.Information);
|
|
}
|
|
}
|
|
}
|
|
#endregion Log
|
|
}
|