mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-26 22:00:16 +08:00
Make session log directory configurable. Fixes issue #494.
This commit is contained in:
@ -68,6 +68,7 @@ const
|
|||||||
DEFAULT_LOGSQLNUM = 300;
|
DEFAULT_LOGSQLNUM = 300;
|
||||||
REGNAME_LOGSQLWIDTH = 'logsqlwidth';
|
REGNAME_LOGSQLWIDTH = 'logsqlwidth';
|
||||||
DEFAULT_LOGSQLWIDTH = 2000;
|
DEFAULT_LOGSQLWIDTH = 2000;
|
||||||
|
REGNAME_LOGDIR = 'SessionLogsDirectory';
|
||||||
REGPREFIX_SQLATTRI = 'SQL Attr ';
|
REGPREFIX_SQLATTRI = 'SQL Attr ';
|
||||||
REGPOSTFIX_SQL_FG = ' Foreground';
|
REGPOSTFIX_SQL_FG = ' Foreground';
|
||||||
REGPOSTFIX_SQL_BG = ' Background';
|
REGPOSTFIX_SQL_BG = ' Background';
|
||||||
|
@ -833,6 +833,7 @@ type
|
|||||||
prefRememberFilters: Boolean;
|
prefRememberFilters: Boolean;
|
||||||
prefLogsqlnum: Integer;
|
prefLogsqlnum: Integer;
|
||||||
prefLogSqlWidth: Integer;
|
prefLogSqlWidth: Integer;
|
||||||
|
prefDirnameSessionLogs: String;
|
||||||
prefMaxColWidth: Integer;
|
prefMaxColWidth: Integer;
|
||||||
prefGridRowcountStep: Integer;
|
prefGridRowcountStep: Integer;
|
||||||
prefGridRowcountMax: Integer;
|
prefGridRowcountMax: Integer;
|
||||||
@ -887,7 +888,6 @@ type
|
|||||||
DirnameCommonAppData: String;
|
DirnameCommonAppData: String;
|
||||||
DirnameUserAppData: String;
|
DirnameUserAppData: String;
|
||||||
DirnameSnippets: String;
|
DirnameSnippets: String;
|
||||||
DirnameSessionLogs: String;
|
|
||||||
|
|
||||||
property Delimiter: String read FDelimiter write SetDelimiter;
|
property Delimiter: String read FDelimiter write SetDelimiter;
|
||||||
procedure CallSQLHelpWithKeyword( keyword: String );
|
procedure CallSQLHelpWithKeyword( keyword: String );
|
||||||
@ -1262,9 +1262,6 @@ begin
|
|||||||
// Folder which contains snippet-files
|
// Folder which contains snippet-files
|
||||||
DirnameSnippets := DirnameCommonAppData + 'Snippets\';
|
DirnameSnippets := DirnameCommonAppData + 'Snippets\';
|
||||||
|
|
||||||
// Folder for session logfiles
|
|
||||||
DirnameSessionLogs := DirnameUserAppData + 'Sessionlogs\';
|
|
||||||
|
|
||||||
// SQLFiles-History
|
// SQLFiles-History
|
||||||
FillPopupQueryLoad;
|
FillPopupQueryLoad;
|
||||||
|
|
||||||
@ -1323,6 +1320,7 @@ begin
|
|||||||
prefMaxColWidth := DEFAULT_MAXCOLWIDTH;
|
prefMaxColWidth := DEFAULT_MAXCOLWIDTH;
|
||||||
prefLogsqlnum := GetRegValue(REGNAME_LOGSQLNUM, DEFAULT_LOGSQLNUM);
|
prefLogsqlnum := GetRegValue(REGNAME_LOGSQLNUM, DEFAULT_LOGSQLNUM);
|
||||||
prefLogSqlWidth := GetRegValue(REGNAME_LOGSQLWIDTH, DEFAULT_LOGSQLWIDTH);
|
prefLogSqlWidth := GetRegValue(REGNAME_LOGSQLWIDTH, DEFAULT_LOGSQLWIDTH);
|
||||||
|
prefDirnameSessionLogs := GetRegValue(REGNAME_LOGDIR, DirnameUserAppData + 'Sessionlogs\');
|
||||||
prefCSVSeparator := GetRegValue(REGNAME_CSV_SEPARATOR, DEFAULT_CSV_SEPARATOR);
|
prefCSVSeparator := GetRegValue(REGNAME_CSV_SEPARATOR, DEFAULT_CSV_SEPARATOR);
|
||||||
prefCSVEncloser := GetRegValue(REGNAME_CSV_ENCLOSER, DEFAULT_CSV_ENCLOSER);
|
prefCSVEncloser := GetRegValue(REGNAME_CSV_ENCLOSER, DEFAULT_CSV_ENCLOSER);
|
||||||
prefCSVTerminator := GetRegValue(REGNAME_CSV_TERMINATOR, DEFAULT_CSV_TERMINATOR);
|
prefCSVTerminator := GetRegValue(REGNAME_CSV_TERMINATOR, DEFAULT_CSV_TERMINATOR);
|
||||||
@ -5931,16 +5929,18 @@ var
|
|||||||
i : Integer;
|
i : Integer;
|
||||||
begin
|
begin
|
||||||
// Ensure directory exists
|
// Ensure directory exists
|
||||||
ForceDirectories( DirnameSessionLogs );
|
if prefDirnameSessionLogs[Length(prefDirnameSessionLogs)] <> '\' then
|
||||||
|
prefDirnameSessionLogs := prefDirnameSessionLogs + '\';
|
||||||
|
ForceDirectories(prefDirnameSessionLogs);
|
||||||
|
|
||||||
// Determine free filename
|
// Determine free filename
|
||||||
LogfilePattern := '%s %.6u.log';
|
LogfilePattern := '%s %.6u.log';
|
||||||
i := 1;
|
i := 1;
|
||||||
FileNameSessionLog := DirnameSessionLogs + goodfilename(Format(LogfilePattern, [SessionName, i]));
|
FileNameSessionLog := prefDirnameSessionLogs + goodfilename(Format(LogfilePattern, [SessionName, i]));
|
||||||
while FileExists( FileNameSessionLog ) do
|
while FileExists( FileNameSessionLog ) do
|
||||||
begin
|
begin
|
||||||
inc(i);
|
inc(i);
|
||||||
FileNameSessionLog := DirnameSessionLogs + goodfilename(Format(LogfilePattern, [SessionName, i]));
|
FileNameSessionLog := prefDirnameSessionLogs + goodfilename(Format(LogfilePattern, [SessionName, i]));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Create file handle for writing
|
// Create file handle for writing
|
||||||
@ -6035,7 +6035,7 @@ end;
|
|||||||
}
|
}
|
||||||
procedure TMainForm.menuOpenLogFolderClick(Sender: TObject);
|
procedure TMainForm.menuOpenLogFolderClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
ShellExec( '', DirnameSessionLogs );
|
ShellExec('', prefDirnameSessionLogs);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
@ -235,16 +235,7 @@ object optionsform: Toptionsform
|
|||||||
Anchors = [akLeft, akTop, akRight]
|
Anchors = [akLeft, akTop, akRight]
|
||||||
Caption = 'Write SQL log to file'
|
Caption = 'Write SQL log to file'
|
||||||
TabOrder = 4
|
TabOrder = 4
|
||||||
OnClick = Modified
|
OnClick = chkLogToFileClick
|
||||||
end
|
|
||||||
object btnOpenLogFolder: TButton
|
|
||||||
Left = 159
|
|
||||||
Top = 68
|
|
||||||
Width = 106
|
|
||||||
Height = 20
|
|
||||||
Caption = 'Open log folder ...'
|
|
||||||
TabOrder = 5
|
|
||||||
OnClick = btnOpenLogFolderClick
|
|
||||||
end
|
end
|
||||||
object chkLogEventErrors: TCheckBox
|
object chkLogEventErrors: TCheckBox
|
||||||
Left = 159
|
Left = 159
|
||||||
@ -291,6 +282,22 @@ object optionsform: Toptionsform
|
|||||||
TabOrder = 10
|
TabOrder = 10
|
||||||
OnClick = Modified
|
OnClick = Modified
|
||||||
end
|
end
|
||||||
|
object editLogDir: TButtonedEdit
|
||||||
|
Left = 159
|
||||||
|
Top = 69
|
||||||
|
Width = 282
|
||||||
|
Height = 21
|
||||||
|
Anchors = [akLeft, akTop, akRight]
|
||||||
|
Enabled = False
|
||||||
|
Images = MainForm.ImageListMain
|
||||||
|
RightButton.ImageIndex = 51
|
||||||
|
RightButton.Visible = True
|
||||||
|
TabOrder = 5
|
||||||
|
Text = 'editLogDir'
|
||||||
|
OnChange = Modified
|
||||||
|
OnDblClick = editLogDirRightButtonClick
|
||||||
|
OnRightButtonClick = editLogDirRightButtonClick
|
||||||
|
end
|
||||||
end
|
end
|
||||||
object tabSQL: TTabSheet
|
object tabSQL: TTabSheet
|
||||||
BorderWidth = 5
|
BorderWidth = 5
|
||||||
|
@ -11,7 +11,7 @@ interface
|
|||||||
uses
|
uses
|
||||||
Windows, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
Windows, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
||||||
StdCtrls, ComCtrls, ExtCtrls, SynEditHighlighter, SynHighlighterSQL,
|
StdCtrls, ComCtrls, ExtCtrls, SynEditHighlighter, SynHighlighterSQL,
|
||||||
SynEdit, SynMemo, VirtualTrees, SynEditKeyCmds, ActnList, SynEditMiscClasses;
|
SynEdit, SynMemo, VirtualTrees, SynEditKeyCmds, ActnList, SynEditMiscClasses, StdActns;
|
||||||
|
|
||||||
type
|
type
|
||||||
TShortcutItemData = record
|
TShortcutItemData = record
|
||||||
@ -121,7 +121,7 @@ type
|
|||||||
editLogSnip: TEdit;
|
editLogSnip: TEdit;
|
||||||
lblLogSnip: TLabel;
|
lblLogSnip: TLabel;
|
||||||
chkLogToFile: TCheckBox;
|
chkLogToFile: TCheckBox;
|
||||||
btnOpenLogFolder: TButton;
|
editLogDir: TButtonedEdit;
|
||||||
lblLogLevel: TLabel;
|
lblLogLevel: TLabel;
|
||||||
chkLogEventErrors: TCheckBox;
|
chkLogEventErrors: TCheckBox;
|
||||||
chkLogEventUserFiredSQL: TCheckBox;
|
chkLogEventUserFiredSQL: TCheckBox;
|
||||||
@ -141,7 +141,8 @@ type
|
|||||||
procedure DataFontsChange(Sender: TObject);
|
procedure DataFontsChange(Sender: TObject);
|
||||||
procedure anyUpDownLimitChanging(Sender: TObject;
|
procedure anyUpDownLimitChanging(Sender: TObject;
|
||||||
var AllowChange: Boolean);
|
var AllowChange: Boolean);
|
||||||
procedure btnOpenLogFolderClick(Sender: TObject);
|
procedure editLogDirRightButtonClick(Sender: TObject);
|
||||||
|
procedure chkLogToFileClick(Sender: TObject);
|
||||||
procedure chkUpdatecheckClick(Sender: TObject);
|
procedure chkUpdatecheckClick(Sender: TObject);
|
||||||
procedure FormCreate(Sender: TObject);
|
procedure FormCreate(Sender: TObject);
|
||||||
procedure chkNullBGClick(Sender: TObject);
|
procedure chkNullBGClick(Sender: TObject);
|
||||||
@ -228,6 +229,7 @@ begin
|
|||||||
MainReg.WriteInteger(REGNAME_TABWIDTH, updownSQLTabWidth.Position);
|
MainReg.WriteInteger(REGNAME_TABWIDTH, updownSQLTabWidth.Position);
|
||||||
MainReg.WriteInteger(REGNAME_LOGSQLNUM, updownLogLines.Position);
|
MainReg.WriteInteger(REGNAME_LOGSQLNUM, updownLogLines.Position);
|
||||||
MainReg.WriteInteger(REGNAME_LOGSQLWIDTH, updownLogSnip.Position);
|
MainReg.WriteInteger(REGNAME_LOGSQLWIDTH, updownLogSnip.Position);
|
||||||
|
MainReg.WriteString(REGNAME_LOGDIR, editLogDir.Text);
|
||||||
MainReg.WriteBool(REGNAME_LOG_ERRORS, chkLogEventErrors.Checked);
|
MainReg.WriteBool(REGNAME_LOG_ERRORS, chkLogEventErrors.Checked);
|
||||||
MainReg.WriteBool(REGNAME_LOG_USERSQL, chkLogEventUserFiredSQL.Checked);
|
MainReg.WriteBool(REGNAME_LOG_USERSQL, chkLogEventUserFiredSQL.Checked);
|
||||||
MainReg.WriteBool(REGNAME_LOG_SQL, chkLogEventSQL.Checked);
|
MainReg.WriteBool(REGNAME_LOG_SQL, chkLogEventSQL.Checked);
|
||||||
@ -321,12 +323,12 @@ begin
|
|||||||
Mainform.prefLogSQL := chkLogEventSQL.Checked;
|
Mainform.prefLogSQL := chkLogEventSQL.Checked;
|
||||||
Mainform.prefLogInfos := chkLogEventInfo.Checked;
|
Mainform.prefLogInfos := chkLogEventInfo.Checked;
|
||||||
Mainform.prefLogDebug := chkLogEventDebug.Checked;
|
Mainform.prefLogDebug := chkLogEventDebug.Checked;
|
||||||
|
Mainform.prefDirnameSessionLogs := editLogDir.Text;
|
||||||
Mainform.TrimSQLLog;
|
Mainform.TrimSQLLog;
|
||||||
if chkLogToFile.Checked then
|
if chkLogToFile.Checked then
|
||||||
Mainform.ActivateFileLogging
|
Mainform.ActivateFileLogging
|
||||||
else if Mainform.prefLogToFile then
|
else if Mainform.prefLogToFile then
|
||||||
Mainform.DeactivateFileLogging;
|
Mainform.DeactivateFileLogging;
|
||||||
btnOpenLogFolder.Enabled := DirectoryExists(Mainform.DirnameSessionLogs);
|
|
||||||
Mainform.prefMaxColWidth := updownMaxColWidth.Position;
|
Mainform.prefMaxColWidth := updownMaxColWidth.Position;
|
||||||
Mainform.prefCSVSeparator := editCSVSeparator.Text;
|
Mainform.prefCSVSeparator := editCSVSeparator.Text;
|
||||||
Mainform.prefCSVEncloser := editCSVEncloser.Text;
|
Mainform.prefCSVEncloser := editCSVEncloser.Text;
|
||||||
@ -421,12 +423,12 @@ begin
|
|||||||
updownLogLines.Position := GetRegValue(REGNAME_LOGSQLNUM, DEFAULT_LOGSQLNUM);
|
updownLogLines.Position := GetRegValue(REGNAME_LOGSQLNUM, DEFAULT_LOGSQLNUM);
|
||||||
updownLogSnip.Position := GetRegValue(REGNAME_LOGSQLWIDTH, DEFAULT_LOGSQLWIDTH);
|
updownLogSnip.Position := GetRegValue(REGNAME_LOGSQLWIDTH, DEFAULT_LOGSQLWIDTH);
|
||||||
chkLogToFile.Checked := GetRegValue(REGNAME_LOGTOFILE, DEFAULT_LOGTOFILE);
|
chkLogToFile.Checked := GetRegValue(REGNAME_LOGTOFILE, DEFAULT_LOGTOFILE);
|
||||||
|
editLogDir.Text := GetRegValue(REGNAME_LOGDIR, Mainform.prefDirnameSessionLogs);
|
||||||
chkLogEventErrors.Checked := GetRegValue(REGNAME_LOG_ERRORS, DEFAULT_LOG_ERRORS);
|
chkLogEventErrors.Checked := GetRegValue(REGNAME_LOG_ERRORS, DEFAULT_LOG_ERRORS);
|
||||||
chkLogEventUserFiredSQL.Checked := GetRegValue(REGNAME_LOG_USERSQL, DEFAULT_LOG_USERSQL);
|
chkLogEventUserFiredSQL.Checked := GetRegValue(REGNAME_LOG_USERSQL, DEFAULT_LOG_USERSQL);
|
||||||
chkLogEventSQL.Checked := GetRegValue(REGNAME_LOG_SQL, DEFAULT_LOG_SQL);
|
chkLogEventSQL.Checked := GetRegValue(REGNAME_LOG_SQL, DEFAULT_LOG_SQL);
|
||||||
chkLogEventInfo.Checked := GetRegValue(REGNAME_LOG_INFOS, DEFAULT_LOG_INFOS);
|
chkLogEventInfo.Checked := GetRegValue(REGNAME_LOG_INFOS, DEFAULT_LOG_INFOS);
|
||||||
chkLogEventDebug.Checked := GetRegValue(REGNAME_LOG_DEBUG, DEFAULT_LOG_DEBUG);
|
chkLogEventDebug.Checked := GetRegValue(REGNAME_LOG_DEBUG, DEFAULT_LOG_DEBUG);
|
||||||
btnOpenLogFolder.Enabled := DirectoryExists(Mainform.DirnameSessionLogs);
|
|
||||||
|
|
||||||
// Default Column-Width in DBGrids:
|
// Default Column-Width in DBGrids:
|
||||||
updownMaxColWidth.Position := GetRegValue(REGNAME_MAXCOLWIDTH, DEFAULT_MAXCOLWIDTH);
|
updownMaxColWidth.Position := GetRegValue(REGNAME_MAXCOLWIDTH, DEFAULT_MAXCOLWIDTH);
|
||||||
@ -517,12 +519,21 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
{**
|
procedure Toptionsform.editLogDirRightButtonClick(Sender: TObject);
|
||||||
Open folder with session logs
|
var
|
||||||
}
|
Browse: TBrowseForFolder;
|
||||||
procedure Toptionsform.btnOpenLogFolderClick(Sender: TObject);
|
|
||||||
begin
|
begin
|
||||||
ShellExec( '', Mainform.DirnameSessionLogs );
|
// Select folder for session logs
|
||||||
|
Browse := TBrowseForFolder.Create(Self);
|
||||||
|
Browse.Folder := (Sender as TButtonedEdit).Text;
|
||||||
|
Browse.DialogCaption := 'Select output directory';
|
||||||
|
// Enable "Create new folder" button
|
||||||
|
Browse.BrowseOptions := Browse.BrowseOptions - [bifNoNewFolderButton] + [bifNewDialogStyle];
|
||||||
|
if Browse.Execute then begin
|
||||||
|
(Sender as TButtonedEdit).Text := Browse.Folder;
|
||||||
|
Modified(Sender);
|
||||||
|
end;
|
||||||
|
Browse.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{**
|
{**
|
||||||
@ -544,6 +555,13 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure Toptionsform.chkLogToFileClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
editLogDir.Enabled := TCheckBox(Sender).Checked;
|
||||||
|
Modified(Sender);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure Toptionsform.chkNullBGClick(Sender: TObject);
|
procedure Toptionsform.chkNullBGClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
cboxNullBG.Enabled := (Sender as TCheckbox).Checked;
|
cboxNullBG.Enabled := (Sender as TCheckbox).Checked;
|
||||||
|
Reference in New Issue
Block a user