| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 51:
 52:
 53:
 54:
 55:
 56:
 57:
 58:
 59:
 60:
 61:
 62:
 63:
 64:
 65:
 66:
 67:
 68:
 69:
 70:
 71:
 72:
 73:
 74:
 75:
 76:
 77:
 78:
 79:
 80:
 81:
 82:
 83:
 84:
 85:
 86:
 87:
 88:
 89:
 90:
 91:
 92:
 93:
 94:
 95:
 96:
 97:
 98:
 99:
 100:
 101:
 102:
 103:
 104:
 105:
 106:
 107:
 108:
 109:
 110:
 111:
 112:
 113:
 114:
 115:
 116:
 117:
 118:
 119:
 120:
 121:
 122:
 123:
 124:
 125:
 126:
 127:
 128:
 129:
 130:
 131:
 132:
 133:
 134:
 135:
 136:
 137:
 138:
 139:
 140:
 141:
 142:
 143:
 144:
 145:
 146:
 147:
 148:
 149:
 150:
 151:
 152:
 153:
 154:
 155:
 156:
 157:
 158:
 159:
 160:
 161:
 162:
 163:
 164:
 165:
 166:
 167:
 168:
 169:
 170:
 171:
 172:
 173:
 174:
 175:
 176:
 177:
 178:
 179:
 180:
 181:
 182:
 183:
 184:
 185:
 186:
 187:
 188:
 189:
 190:
 191:
 192:
 193:
 194:
 195:
 196:
 197:
 198:
 199:
 200:
 201:
 202:
 203:
 204:
 205:
 206:
 207:
 208:
 209:
 210:
 211:
 212:
 213:
 214:
 215:
 216:
 217:
 218:
 219:
 220:
 221:
 222:
 223:
 224:
 225:
 226:
 227:
 228:
 229:
 230:
 231:
 232:
 233:
 234:
 235:
 236:
 237:
 238:
 239:
 240:
 241:
 242:
 243:
 244:
 245:
 246:
 247:
 248:
 249:
 250:
 251:
 252:
 253:
 254:
 255:
 256:
 257:
 258:
 259:
 260:
 261:
 262:
 
 | unit Log;
 
 interface
 procedure SetFilePath(Path: string);
 function GetFilePath: string;
 
 procedure SetLogFileExtension(ext: string);
 function GetLogFileExtension: string;
 
 procedure SetLogFileNameStructure(Structure: string);
 function GetLogFileNameStructure: string;
 
 procedure SetLogEntryStructure(Structure: string);
 function GetLogEntryStructure: string;
 
 procedure SetLogCommentStructure(Structure: string);
 function GetLogCommentStructure: string;
 
 procedure SetLogAlertStructure(Structure: string);
 function GetLogAlertStructure: string;
 
 procedure AddLogEntry(Text: string);overload;
 procedure AddLogEntry(Text: string; Time: TDateTime);overload;
 
 procedure AddLogComment(Text: string);overload;
 procedure AddLogComment(Text: string; Time: TDateTime);overload;
 
 procedure AddLogAlert(Text: string);overload;
 procedure AddLogAlert(Text: string; Time: TDateTime);overload;
 
 function GetCurrentLogFileName: string;
 
 function WildcardToText(Wildcard: string): string;
 
 implementation
 
 uses Classes, SysUtils, DateUtils;
 
 var
 FilePath: string = 'Logs\';
 LogFileExt: string = 'log';
 FileNameStructure: string = '$Y-$M-$D';
 LogEntryStructure: string = '$h:$m:$s - $t';
 CommentStructure: string = '--- $t ---';
 AlertStructure: string = '### $h:$m:$s ### $t ###';
 ProgDir: string = '';
 InputText: string = '';
 
 procedure GetProgPath;
 begin
 if ProgDir = '' then
 ProgDir := ExtractFilePath(ParamStr(0));
 end;
 
 procedure SendToInputText(Text: string);
 begin
 InputText := Text;
 end;
 
 procedure WriteToFile(Text, RelativePath, FileName: string);
 var
 f:Textfile;
 size:longint;
 s: string;
 begin
 s := '';
 GetProgPath;
 If not DirectoryExists(ProgDir + relativePath) then
 ForceDirectories(ProgDir + relativePath);
 {$I-}
 assignfile(f, ProgDir + relativePath + FileName);
 Append(f);
 if ioresult<>0 then
 rewrite(f);
 
 writeln(f,Text);
 closeFile(f);
 {$I+}
 end;
 
 function replaceText(Text: string; Time: TDateTime): string;
 var
 EndResult: string;
 begin
 Result := '';
 EndResult := StringReplace(Text, '$Y', FormatDateTime('yyyy', Time),
 [rfReplaceAll]);
 EndResult := StringReplace(EndResult, '$M', FormatDateTime('mm', Time),
 [rfReplaceAll]);
 EndResult := StringReplace(EndResult, '$D', FormatDateTime('dd', Time),
 [rfReplaceAll]);
 EndResult := StringReplace(EndResult, '$h', FormatDateTime('hh', Time),
 [rfReplaceAll]);
 EndResult := StringReplace(EndResult, '$m', FormatDateTime('nn', Time),
 [rfReplaceAll]);
 EndResult := StringReplace(EndResult, '$s', FormatDateTime('ss', Time),
 [rfReplaceAll]);
 EndResult := StringReplace(EndResult, '$k', FormatDateTime('zzz', Time),
 [rfReplaceAll]);
 EndResult := StringReplace(EndResult, '$t', InputText, [rfReplaceAll]);
 
 Result := EndResult;
 end;
 
 procedure SetFilePath(Path: string);
 function CheckBackSlash(const AFilename: String): String;
 begin
 if Length(AFilename)=0 then
 begin
 Result:=AFilename;
 Exit;
 end;
 
 if AFilename[Length(AFilename)]<>'\' then
 Result:=AFilename+'\'
 else
 Result:=AFilename;
 end;
 begin
 
 FilePath := CheckBackslash(Path);
 end;
 
 
 function GetFilePath: string;
 begin
 Result := FilePath;
 end;
 
 procedure SetLogFileExtension(ext: string);
 begin
 If Ext[1] = '.' then
 Delete(Ext, 1, 1);
 SetLength(Ext, 3);
 LogFileExt := ext;
 end;
 
 function GetLogFileExtension: string;
 begin
 Result := LogFileExt;
 end;
 
 procedure SetLogFileNameStructure(Structure: string);
 begin
 FileNameStructure := Structure;
 end;
 
 function GetLogFileNameStructure: string;
 begin
 Result := FileNameStructure;
 end;
 
 procedure SetLogEntryStructure(Structure: string);
 begin
 LogEntryStructure := Structure;
 end;
 
 function GetLogEntryStructure: string;
 begin
 Result := LogEntryStructure;
 end;
 
 procedure SetLogCommentStructure(Structure: string);
 begin
 CommentStructure := Structure;
 end;
 
 function GetLogCommentStructure: string;
 begin
 Result := CommentStructure;
 end;
 
 procedure SetLogAlertStructure(Structure: string);
 begin
 AlertStructure := Structure;
 end;
 
 function GetLogAlertStructure: string;
 begin
 Result := AlertStructure;
 end;
 
 procedure AddLogEntry(Text: string);
 begin
 AddLogEntry(Text, now);
 end;
 
 procedure AddLogEntry(Text: string; Time: TDateTime);
 var
 Filename, EntryText: string;
 Zeit: TDateTime;
 begin
 SendToInputText(Text);
 Zeit := Time;
 FileName := ReplaceText(FileNameStructure, Zeit) + '.' + LogFileExt;
 EntryText := ReplaceText(LogEntryStructure, Zeit);
 WriteToFile(EntryText, FilePath, FileName);
 end;
 
 procedure AddLogComment(Text: string);
 begin
 AddLogComment(Text, now);
 end;
 
 procedure AddLogComment(Text: string; Time: TDateTime);
 var
 Filename, EntryText: string;
 Zeit: TDateTime;
 begin
 SendToInputText(Text);
 Zeit := Time;
 FileName := ReplaceText(FileNameStructure, Zeit) + '.' + LogFileExt;
 EntryText := ReplaceText(CommentStructure, Zeit);
 WriteToFile(EntryText, FilePath, FileName);
 end;
 
 procedure AddLogAlert(Text: string);
 begin
 AddLogAlert(Text, now);
 end;
 
 procedure AddLogAlert(Text: string; Time: TDateTime);
 var
 Filename, EntryText: string;
 Zeit: TDateTime;
 begin
 SendToInputText(Text);
 Zeit := Time;
 FileName := ReplaceText(FileNameStructure, Zeit) + '.' + LogFileExt;
 EntryText := ReplaceText(AlertStructure, Zeit);
 WriteToFile(EntryText, FilePath, FileName);
 end;
 
 function GetCurrentLogFileName: string;
 begin
 GetProgPath;
 Result := ProgDir + FilePath + replaceText(FileNameStructure, now) + '.' +
 LogFileExt;
 end;
 
 function WildcardToText(Wildcard: string): string;
 begin
 Result := Replacetext(Wildcard, now);
 end;
 
 end.
 |