Skip to content
Snippets Groups Projects
Commit cff51443 authored by Rob Swindell's avatar Rob Swindell :speech_balloon:
Browse files

Add "Log Events to Disk" option/checkbox for terminal server "Events"

The "Events" log messages will now be logged to a disk file in
data/events*.log by default (unless this option is disabled).

If the "First node" is > 1, then the base filename will be
"events<first-node>", otherwise, it's just "events". This is because you
would not want multiple instances of sbbs writing to the same events.log
file - that would be chaos. These log files are subject the log
rotation/retention policy defined in SCFG.

This should resolve the FAQ for Windows sysops about what log file to
which their event log messages are being written.
parent 7e102c79
No related branches found
No related tags found
No related merge requests found
...@@ -391,7 +391,35 @@ static void bbs_start(void) ...@@ -391,7 +391,35 @@ static void bbs_start(void)
static void event_log_msg(log_msg_t* msg) static void event_log_msg(log_msg_t* msg)
{ {
static FILE* LogStream;
if(msg==NULL) {
if(LogStream!=NULL)
fcloselog(LogStream);
LogStream=NULL;
return;
}
log_msg(EventsForm->Log, msg); log_msg(EventsForm->Log, msg);
if(MainForm->EventsLogFile) {
AnsiString LogFileName = AnsiString(MainForm->cfg.logs_dir) + "events";
if(MainForm->bbs_startup.first_node > 1)
LogFileName += MainForm->bbs_startup.first_node;
LogFileName += ".log";
if(LogStream==NULL)
LogStream=fopenlog(&MainForm->cfg, LogFileName.c_str());
if(LogStream!=NULL) {
AnsiString Line=SystemTimeToDateTime(msg->time).FormatString("yyyy-mm-dd hh:mm:ss ");
Line+=AnsiString(msg->buf).Trim();
if(msg->repeated)
Line += " [x" + AnsiString(msg->repeated + 1) + "]";
Line+="\n";
fwritelog(AnsiString(Line).c_str(),Line.Length(),LogStream);
}
}
} }
static void services_log_msg(log_msg_t* msg) static void services_log_msg(log_msg_t* msg)
...@@ -1901,15 +1929,20 @@ void __fastcall TMainForm::StartupTimerTick(TObject *Sender) ...@@ -1901,15 +1929,20 @@ void __fastcall TMainForm::StartupTimerTick(TObject *Sender)
ErrorSoundFile=Registry->ReadString("ErrorSoundFile"); ErrorSoundFile=Registry->ReadString("ErrorSoundFile");
if(Registry->ValueExists("MailLogFile")) if(Registry->ValueExists("MailLogFile"))
MailLogFile=Registry->ReadInteger("MailLogFile"); MailLogFile=Registry->ReadBool("MailLogFile");
else else
MailLogFile=true; MailLogFile=true;
if(Registry->ValueExists("FtpLogFile")) if(Registry->ValueExists("FtpLogFile"))
FtpLogFile=Registry->ReadInteger("FtpLogFile"); FtpLogFile=Registry->ReadBool("FtpLogFile");
else else
FtpLogFile=true; FtpLogFile=true;
if(Registry->ValueExists("EventsLogFile"))
EventsLogFile=Registry->ReadBool("EventsLogFile");
else
EventsLogFile=true;
Registry->CloseKey(); Registry->CloseKey();
delete Registry; delete Registry;
...@@ -2238,6 +2271,10 @@ void __fastcall TMainForm::SaveRegistrySettings(TObject* Sender) ...@@ -2238,6 +2271,10 @@ void __fastcall TMainForm::SaveRegistrySettings(TObject* Sender)
Registry->WriteBool("ToolBarVisible",Toolbar->Visible); Registry->WriteBool("ToolBarVisible",Toolbar->Visible);
Registry->WriteBool("StatusBarVisible",StatusBar->Visible); Registry->WriteBool("StatusBarVisible",StatusBar->Visible);
Registry->WriteBool("FtpLogFile", FtpLogFile);
Registry->WriteBool("MailLogFile", MailLogFile);
Registry->WriteBool("EventsLogFile", EventsLogFile);
Registry->WriteInteger("MaxLogLen",MaxLogLen); Registry->WriteInteger("MaxLogLen",MaxLogLen);
Registry->WriteString("LoginCommand",LoginCommand); Registry->WriteString("LoginCommand",LoginCommand);
...@@ -2375,6 +2412,7 @@ void __fastcall TMainForm::ImportSettings(TObject* Sender) ...@@ -2375,6 +2412,7 @@ void __fastcall TMainForm::ImportSettings(TObject* Sender)
ImportFormSettings(IniFile,section="TelnetForm",TelnetForm); ImportFormSettings(IniFile,section="TelnetForm",TelnetForm);
ImportFont(IniFile,section,"LogFont",TelnetForm->Log->Font); ImportFont(IniFile,section,"LogFont",TelnetForm->Log->Font);
TelnetForm->Log->Color=StringToColor(IniFile->ReadString(section,"LogColor",clWindow)); TelnetForm->Log->Color=StringToColor(IniFile->ReadString(section,"LogColor",clWindow));
EventsLogFile=IniFile->ReadBool(section,"EventsFile",true);
ImportFormSettings(IniFile,section="EventsForm",EventsForm); ImportFormSettings(IniFile,section="EventsForm",EventsForm);
ImportFont(IniFile,section,"LogFont",EventsForm->Log->Font); ImportFont(IniFile,section,"LogFont",EventsForm->Log->Font);
...@@ -2386,7 +2424,7 @@ void __fastcall TMainForm::ImportSettings(TObject* Sender) ...@@ -2386,7 +2424,7 @@ void __fastcall TMainForm::ImportSettings(TObject* Sender)
ImportFormSettings(IniFile,section="FtpForm",FtpForm); ImportFormSettings(IniFile,section="FtpForm",FtpForm);
ImportFont(IniFile,section,"LogFont",FtpForm->Log->Font); ImportFont(IniFile,section,"LogFont",FtpForm->Log->Font);
FtpLogFile=IniFile->ReadInteger(section,"LogFile",true); FtpLogFile=IniFile->ReadBool(section,"LogFile",true);
FtpForm->Log->Color=StringToColor(IniFile->ReadString(section,"LogColor",clWindow)); FtpForm->Log->Color=StringToColor(IniFile->ReadString(section,"LogColor",clWindow));
ImportFormSettings(IniFile,section="WebForm",WebForm); ImportFormSettings(IniFile,section="WebForm",WebForm);
...@@ -2395,7 +2433,7 @@ void __fastcall TMainForm::ImportSettings(TObject* Sender) ...@@ -2395,7 +2433,7 @@ void __fastcall TMainForm::ImportSettings(TObject* Sender)
ImportFormSettings(IniFile,section="MailForm",MailForm); ImportFormSettings(IniFile,section="MailForm",MailForm);
ImportFont(IniFile,section,"LogFont",MailForm->Log->Font); ImportFont(IniFile,section,"LogFont",MailForm->Log->Font);
MailLogFile=IniFile->ReadInteger(section,"LogFile",true); MailLogFile=IniFile->ReadBool(section,"LogFile",true);
MailForm->Log->Color=StringToColor(IniFile->ReadString(section,"LogColor",clWindow)); MailForm->Log->Color=StringToColor(IniFile->ReadString(section,"LogColor",clWindow));
ImportFormSettings(IniFile,section="NodeForm",NodeForm); ImportFormSettings(IniFile,section="NodeForm",NodeForm);
......
object MainForm: TMainForm object MainForm: TMainForm
Left = 733 Left = 420
Top = 639 Top = 574
Width = 793 Width = 793
Height = 398 Height = 398
Caption = 'Synchronet Control Panel' Caption = 'Synchronet Control Panel'
...@@ -463,6 +463,7 @@ public: // User declarations ...@@ -463,6 +463,7 @@ public: // User declarations
BOOL ServicesAutoStart; BOOL ServicesAutoStart;
bool MailLogFile; bool MailLogFile;
bool FtpLogFile; bool FtpLogFile;
bool EventsLogFile;
AnsiString LoginCommand; AnsiString LoginCommand;
AnsiString ConfigCommand; AnsiString ConfigCommand;
AnsiString Password; AnsiString Password;
......
...@@ -109,6 +109,8 @@ void __fastcall TTelnetCfgDlg::FormShow(TObject *Sender) ...@@ -109,6 +109,8 @@ void __fastcall TTelnetCfgDlg::FormShow(TObject *Sender)
EventsCheckBox->Checked EventsCheckBox->Checked
=!(MainForm->bbs_startup.options&BBS_OPT_NO_EVENTS); =!(MainForm->bbs_startup.options&BBS_OPT_NO_EVENTS);
EventsLogFileCheckBox->Checked = MainForm->EventsLogFile;
RLoginEnabledCheckBoxClick(Sender); RLoginEnabledCheckBoxClick(Sender);
SshEnabledCheckBoxClick(Sender); SshEnabledCheckBoxClick(Sender);
PageControl->ActivePage=GeneralTabSheet; PageControl->ActivePage=GeneralTabSheet;
...@@ -180,6 +182,7 @@ void __fastcall TTelnetCfgDlg::OKBtnClick(TObject *Sender) ...@@ -180,6 +182,7 @@ void __fastcall TTelnetCfgDlg::OKBtnClick(TObject *Sender)
else else
MainForm->bbs_startup.options&=~BBS_OPT_ALLOW_SSH; MainForm->bbs_startup.options&=~BBS_OPT_ALLOW_SSH;
MainForm->EventsLogFile = EventsLogFileCheckBox->Checked;
MainForm->SaveIniSettings(Sender); MainForm->SaveIniSettings(Sender);
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
......
...@@ -17,8 +17,8 @@ object TelnetCfgDlg: TTelnetCfgDlg ...@@ -17,8 +17,8 @@ object TelnetCfgDlg: TTelnetCfgDlg
Top = 3 Top = 3
Width = 278 Width = 278
Height = 186 Height = 186
ActivePage = SoundTabSheet ActivePage = GeneralTabSheet
TabIndex = 4 TabIndex = 0
TabOrder = 0 TabOrder = 0
object GeneralTabSheet: TTabSheet object GeneralTabSheet: TTabSheet
Caption = 'General' Caption = 'General'
...@@ -101,7 +101,7 @@ object TelnetCfgDlg: TTelnetCfgDlg ...@@ -101,7 +101,7 @@ object TelnetCfgDlg: TTelnetCfgDlg
end end
object QWKEventsCheckBox: TCheckBox object QWKEventsCheckBox: TCheckBox
Left = 148 Left = 148
Top = 88 Top = 114
Width = 117 Width = 117
Height = 20 Height = 20
Hint = 'Handle QWK Message Packet Events in This Instance' Hint = 'Handle QWK Message Packet Events in This Instance'
...@@ -144,6 +144,17 @@ object TelnetCfgDlg: TTelnetCfgDlg ...@@ -144,6 +144,17 @@ object TelnetCfgDlg: TTelnetCfgDlg
ShowHint = True ShowHint = True
TabOrder = 2 TabOrder = 2
end end
object EventsLogFileCheckBox: TCheckBox
Left = 148
Top = 88
Width = 117
Height = 20
Hint = 'Save event log messages to disk file in your DATA directory'
Caption = 'Log Events to Disk'
ParentShowHint = False
ShowHint = True
TabOrder = 9
end
end end
object TelnetTabSheet: TTabSheet object TelnetTabSheet: TTabSheet
Caption = 'Telnet' Caption = 'Telnet'
......
...@@ -96,6 +96,7 @@ __published: ...@@ -96,6 +96,7 @@ __published:
TLabel *SshConnectTimeoutLabel; TLabel *SshConnectTimeoutLabel;
TEdit *SshConnTimeoutEdit; TEdit *SshConnTimeoutEdit;
TButton *ConfigureSoundButton; TButton *ConfigureSoundButton;
TCheckBox *EventsLogFileCheckBox;
void __fastcall FormShow(TObject *Sender); void __fastcall FormShow(TObject *Sender);
void __fastcall OKBtnClick(TObject *Sender); void __fastcall OKBtnClick(TObject *Sender);
void __fastcall RLoginEnabledCheckBoxClick(TObject *Sender); void __fastcall RLoginEnabledCheckBoxClick(TObject *Sender);
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<VERSION value="BCB.06.00"/> <VERSION value="BCB.06.00"/>
<PROJECT value="sbbsctrl.exe"/> <PROJECT value="sbbsctrl.exe"/>
<OBJFILES value="sbbsctrl.obj MainFormUnit.obj CtrlPathDialogUnit.obj TextFileEditUnit.obj <OBJFILES value="sbbsctrl.obj MainFormUnit.obj CtrlPathDialogUnit.obj TextFileEditUnit.obj
TelnetFormUnit.obj FtpFormUnit.obj MailFormUnit.obj NodeFormUnit.obj TelnetFormUnit.obj FtpFormUnit.obj MailFormUnit.obj NodeFormUnit.obj ..\nopen.obj
StatsFormUnit.obj AboutBoxFormUnit.obj StatsLogFormUnit.obj StatsFormUnit.obj AboutBoxFormUnit.obj StatsLogFormUnit.obj
CodeInputFormUnit.obj ClientFormUnit.obj SpyFormUnit.obj ..\ringbuf.obj CodeInputFormUnit.obj ClientFormUnit.obj SpyFormUnit.obj ..\ringbuf.obj
emulvt.obj UserListFormUnit.obj UserMsgFormUnit.obj PropertiesDlgUnit.obj emulvt.obj UserListFormUnit.obj UserMsgFormUnit.obj PropertiesDlgUnit.obj
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment