From f19f0ad275c200dfa101396f26db8377cb2a5a7e Mon Sep 17 00:00:00 2001 From: "R. Eric Wheeler" Date: Sat, 25 Feb 2017 20:17:18 -0800 Subject: [PATCH] Added Null and Console Handlers --- Logger.ConsoleHandler.pp | 90 ++++++++++++++++++++++++++++++++++++++++ Logger.NullHandler.pp | 84 +++++++++++++++++++++++++++++++++++++ README.md | 8 +++- tests/LoggerTest.pp | 12 ++++-- 4 files changed, 189 insertions(+), 5 deletions(-) create mode 100644 Logger.ConsoleHandler.pp create mode 100644 Logger.NullHandler.pp diff --git a/Logger.ConsoleHandler.pp b/Logger.ConsoleHandler.pp new file mode 100644 index 0000000..8016788 --- /dev/null +++ b/Logger.ConsoleHandler.pp @@ -0,0 +1,90 @@ +{*******************************************************} + +{ Renegade BBS } + +{ Copyright (c) 1990-2013 The Renegade Dev Team } +{ Copyleft (ↄ) 2016-2017 Renegade BBS } + +{ This file is part of Renegade BBS } + +{ Renegade is free software: you can redistribute it } +{ and/or modify it under the terms of the GNU General } +{ Public License as published by the Free Software } +{ Foundation, either version 3 of the License, or } +{ (at your option) any later version. } + +{ Renegade is distributed in the hope that it will be } +{ useful, but WITHOUT ANY WARRANTY; without even the } +{ implied warranty of MERCHANTABILITY or FITNESS FOR } +{ A PARTICULAR PURPOSE. See the GNU General Public } +{ License for more details. } + +{ You should have received a copy of the GNU General } +{ Public License along with Renegade. If not, see } +{ . } + +{*******************************************************} +{ _______ __ } +{ | _ .-----.-----.-----.-----.---.-.--| .-----. } +{ |. l | -__| | -__| _ | _ | _ | -__| } +{ |. _ |_____|__|__|_____|___ |___._|_____|_____| } +{ |: | | |_____| } +{ |::.|:. | } +{ `--- ---' } +{*******************************************************} +{$mode objfpc} +{$codepage utf8} +{$h+} +unit Logger.ConsoleHandler; + +interface + +uses + Classes, + SysUtils, + Logger.HandlerInterface; + +type + ConsoleHandler = class(TObject, LoggingHandlerInterface) + Private + LogIdentifier : UTF8String; + Public + constructor Create(); + destructor Destroy(); + function Open(Identifier: UTF8String): boolean; + function Close(): boolean; + function Write(const LogData: UTF8String): boolean; + end; + +implementation + +constructor ConsoleHandler.Create(); +begin + inherited Create; +end; + +destructor ConsoleHandler.Destroy(); +begin + inherited Destroy; +end; + +function ConsoleHandler.Open(Identifier: UTF8String) : boolean; +begin + LogIdentifier := Identifier; +end; + +function ConsoleHandler.Close(): boolean; +begin + Result := True; +end; + +function ConsoleHandler.Write(const LogData: UTF8String): boolean; +var + LogMessage : UTF8String; +begin + LogMessage := Format('%S[%D] %S', [LogIdentifier, GetProcessId(), LogData]); + Writeln(LogMessage); + Result := True; +end; + +end. diff --git a/Logger.NullHandler.pp b/Logger.NullHandler.pp new file mode 100644 index 0000000..fe612b9 --- /dev/null +++ b/Logger.NullHandler.pp @@ -0,0 +1,84 @@ +{*******************************************************} + +{ Renegade BBS } + +{ Copyright (c) 1990-2013 The Renegade Dev Team } +{ Copyleft (ↄ) 2016-2017 Renegade BBS } + +{ This file is part of Renegade BBS } + +{ Renegade is free software: you can redistribute it } +{ and/or modify it under the terms of the GNU General } +{ Public License as published by the Free Software } +{ Foundation, either version 3 of the License, or } +{ (at your option) any later version. } + +{ Renegade is distributed in the hope that it will be } +{ useful, but WITHOUT ANY WARRANTY; without even the } +{ implied warranty of MERCHANTABILITY or FITNESS FOR } +{ A PARTICULAR PURPOSE. See the GNU General Public } +{ License for more details. } + +{ You should have received a copy of the GNU General } +{ Public License along with Renegade. If not, see } +{ . } + +{*******************************************************} +{ _______ __ } +{ | _ .-----.-----.-----.-----.---.-.--| .-----. } +{ |. l | -__| | -__| _ | _ | _ | -__| } +{ |. _ |_____|__|__|_____|___ |___._|_____|_____| } +{ |: | | |_____| } +{ |::.|:. | } +{ `--- ---' } +{*******************************************************} +{$mode objfpc} +{$codepage utf8} +{$h+} +unit Logger.NullHandler; + +interface + +uses + Classes, + SysUtils, + Logger.HandlerInterface; + +type + NullHandler = class(TObject, LoggingHandlerInterface) + Public + constructor Create(); + destructor Destroy(); + function Open(Identifier: UTF8String): boolean; + function Close(): boolean; + function Write(const LogData: UTF8String): boolean; + end; + +implementation + +constructor NullHandler.Create(); +begin + inherited Create; +end; + +destructor NullHandler.Destroy(); +begin + inherited Destroy; +end; + +function NullHandler.Open(Identifier: UTF8String) : boolean; +begin + Result := True; +end; + +function NullHandler.Close(): boolean; +begin + Result := True; +end; + +function NullHandler.Write(const LogData: UTF8String): boolean; +begin + Result := True; +end; + +end. diff --git a/README.md b/README.md index 02d15d5..87d0b4d 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,11 @@ uses (Logger.HandlerInterface unit) to create your own. } Logger.SysLogHandler, - // or Logger.StreamHandler, + // or + Logger.StreamHandler, + Logger.ConsoleHandler, + Logger.FileHandler, + Logger.NullHandler, //... other units; var @@ -41,4 +45,4 @@ begin Log.Free; LogHandler.Free; end. -``` \ No newline at end of file +``` diff --git a/tests/LoggerTest.pp b/tests/LoggerTest.pp index b273f46..0ace54e 100644 --- a/tests/LoggerTest.pp +++ b/tests/LoggerTest.pp @@ -43,19 +43,25 @@ uses Renegade.Logger, Logger.SysLogHandler, Logger.StreamHandler, - Logger.FileHandler; + Logger.FileHandler, + Logger.NullHandler, + Logger.ConsoleHandler; var StreamLogHandler : StreamHandler; Log: RTLogger; LogFileHandler : FileHandler; MemoryStream : TMemoryStream; + NullLogHandler : NullHandler; + ConsoleLogHandler : ConsoleHandler; begin //MemoryStream := TMemoryStream.Create; //StreamLogHandler := StreamHandler.Create('test.log'); //StreamLogHandler := StreamHandler.Create(MemoryStream); - LogFileHandler := FileHandler.Create('test.log'); - Log := RTLogger.Create(LogFileHandler); + //LogFileHandler := FileHandler.Create('test.log'); + //NullLogHandler := NullHandler.Create; + ConsoleLogHandler := ConsoleHandler.Create; + Log := RTLogger.Create(ConsoleLogHandler); Log.Info('Testing', ['File', True, 'Error', True, 'Extended', 'Extend']); Log.Debug('Debugging', []); Log.Error('Error', []);