using System.Runtime.InteropServices; // DllImport() namespace plexdata { namespace logtrace { class Console : Logger { public Console() : base(Logger.LOGTYPE_CONSOLE, true, false, true) { } } class File : Logger { public File() : base(Logger.LOGTYPE_FILE, true, true, false) { } } class Event : Logger { public Event() : base(Logger.LOGTYPE_EVENTLOG, false, false, false) { } } class Logger { protected static int LOGTYPE_CONSOLE = 1; protected static int LOGTYPE_FILE = 2; protected static int LOGTYPE_EVENTLOG = 3; private long handle; private long logType; private bool timeStamp; private bool enableLabel; private bool overwrite; public Logger(long logType, bool timeStamp, bool enableLabel, bool overwrite ) { this.logType = logType; this.timeStamp = timeStamp; this.enableLabel = enableLabel; this.overwrite = overwrite; } public long LogType { get { return this.logType; } } public bool TimeStamp { get { return this.timeStamp; } } public bool UseLabel { get { return this.enableLabel; } } public bool Overwrite { get { return this.overwrite; } } public bool Attach(string name) { this.Detach(); this.handle = Logger.LogAttach(this.LogType, this.TimeStamp, this.UseLabel, this.Overwrite, name); return this.handle != 0; } public bool Message(string message) { return Logger.LogMessage(this.handle, message); } public bool Warning(string warning) { return Logger.LogWarning(this.handle, warning); } public bool Error(string error) { return Logger.LogError(this.handle, error); } public bool Dump(byte[] buffer) { return Logger.LogDump(this.handle, buffer, buffer.Length, true); } public void Detach() { Logger.LogDetach(this.handle); this.handle = 0; } [DllImport("logapi.dll")] private static extern long LogAttach(long logType, bool timeStamp, bool enableLabel, bool overwrite, string name); [DllImport("logapi.dll")] private static extern bool LogMessage(long handle, string message); [DllImport("logapi.dll")] private static extern bool LogWarning(long handle, string warning); [DllImport("logapi.dll")] private static extern bool LogError(long handle, string error); [DllImport("logapi.dll")] private static extern bool LogDump(long handle, byte[] buffer, long length, bool absolute); [DllImport("logapi.dll")] private static extern bool LogResize(long handle, long length, long width); [DllImport("logapi.dll")] private static extern bool LogColors(long handle, bool enable); [DllImport("logapi.dll")] private static extern void LogDetach(long handle); } } } // EOF