Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // You can force EurekaLog to generate bug report in some other format.
- // Obviously, there is no such build-in feature in EurekaLog.
- // Here is a simple code that creates bug report in format of EurekaLog 6 (with less columns in call stack).
- // Naturally, you may replace the whole code by overriding TBaseLogBuilder.BuildReport method.
- // See also: https://www.eurekalog.com/downloads_extras.php
- // This sample uses a combination of custom class and event handler to reach the desired goal.
- uses
- EConsts, ETypes, EClasses, ECallStack, EException, EEvents, ELogBuilder;
- type
- // EurekaLog 6 format will be altered from default EurekaLog 7 format,
- // that's why we inherit from EurekaLog 7 builder class and
- // replace only some methods
- TEurekaLog6Builder = class(TLogBuilder)
- public
- function CreateGeneralText: String; override;
- function CreateCallStackText: String; override;
- end;
- { TEurekaLog6Builder }
- // Replace header of the bug report (to change "7" to "6" in header)
- function TEurekaLog6Builder.CreateGeneralText: String;
- begin
- Result := inherited;
- Result := 'EurekaLog 6' + Copy(Result, Pos(sLineBreak, Result), MaxInt);
- end;
- // Replace call stack (remove new columns)
- function TEurekaLog6Builder.CreateCallStackText: String;
- var
- Stack: TEurekaCallStack;
- Formatter: TEurekaBaseStackFormatter;
- begin
- Stack := nil;
- try
- if CallStack <> nil then
- begin
- Stack := TEurekaCallStack.Create;
- Stack.Assign(CallStack);
- Stack.Formatter.Assign(Options);
- Stack.Formatter.CaptionHeader :=
- Options.CustomizedExpandedTexts[mtDialog_CallStackHeader] + EHeaderSuffix;
- end;
- Formatter := TEurekaStackFormatterV6.Create;
- try
- Formatter.Assign(Options);
- Formatter.CaptionHeader :=
- Options.CustomizedExpandedTexts[mtDialog_CallStackHeader] + EHeaderSuffix;
- Result := CallStackToString(Stack,
- Options.CustomizedExpandedTexts[mtDialog_CallStackHeader] + EHeaderSuffix,
- Formatter);
- finally
- FreeAndNil(Formatter);
- end;
- finally
- FreeAndNil(Stack);
- end;
- end;
- // Rename .el files to old .elf files
- procedure CustomizeFileNames(const ACustom: Pointer; AExceptionInfo: TEurekaExceptionInfo;
- const AFileType: TEurekaLogFileType; var AFileName: String; var ACallNextHandler: Boolean);
- begin
- if AnsiLowerCase(ExtractFileExt(AFileName)) = '.el' then
- AFileName := ChangeFileExt(AFileName, '.elf');
- end;
- initialization
- // Register bug report builder:
- LogBuilderClass := TEurekaLog6Builder;
- // Register event handler for file names:
- RegisterEventCustomFileName(nil, CustomizeFileNames);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement