I use this (quickly written) code to log to Syslog on Linux and to Eventlog (Applications) under Windows.
Firstly you have to call the Init-Procedure to specify a name (ie program) ...
* Syslog_Init(applicationName.s = "")
... and then you can easily call the 3 variants ...
* Syslog_Info(Message$)
* Syslog_Warning(Message$)
* Syslog_Error(Message$)
May you have fun with this

Cheers,
Didel.
Code: Select all
Global _Syslog_gl_ApplicationName.s = ""
Procedure Syslog_Init(applicationName.s = "")
_Syslog_gl_ApplicationName = applicationName
EndProcedure
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
Procedure _Syslog_Write2Log(constEventType.i, Message$)
hdl.i = RegisterEventSource_(0, "chrisu")
If (hdl)
Dim s.s(0)
s(0) = Message$
ReportEvent_(hdl, constEventType, 0, 0, 0, 1, 0, @s(), 0)
DeregisterEventSource_(hdl)
EndIf
EndProcedure
Procedure Syslog_Info(Message$)
_Syslog_Write2Log(4, Message$)
EndProcedure
Procedure Syslog_Warning(Message$)
_Syslog_Write2Log(2, Message$)
EndProcedure
Procedure Syslog_Error(Message$)
_Syslog_Write2Log(1, Message$)
EndProcedure
CompilerElse
Procedure _Syslog_Write2Log(level.s, Message$)
If (FindString(Message$, Chr(10)))
cnt.i = CountString(Message$, Chr(10))
For i.i = 1 To cnt+1
s.s = level + StringField(Message$, i, Chr(10))
parms.s = "-t " + Chr(34) + ReplaceString(_Syslog_gl_ApplicationName, Chr(34), "'") + Chr(34) + " " + Chr(34) + ReplaceString(s, Chr(34), "'") + Chr(34)
RunProgram("logger", parms, "", #PB_Program_Wait)
level = Space(Len(level))
Next i
Else
Message$ = level + Message$
parms.s = "-t " + Chr(34) + ReplaceString(_Syslog_gl_ApplicationName, Chr(34), "'") + Chr(34) + " " + Chr(34) + ReplaceString(Message$, Chr(34), "'") + Chr(34)
RunProgram("logger", parms, "", #PB_Program_Wait)
EndIf
EndProcedure
Procedure Syslog_Info(Message$)
_Syslog_Write2Log("Informational: ", Message$)
EndProcedure
Procedure Syslog_Warning(Message$)
_Syslog_Write2Log("Warning: ", Message$)
EndProcedure
Procedure Syslog_Error(Message$)
_Syslog_Write2Log("Error: ", Message$)
EndProcedure
CompilerEndIf
;
; Syslog_Init("chrisu-test")
; Syslog_Info("Hallo World!")
; Syslog_Info("Zeile 1" + Chr(10) + "Zeile 2" + Chr(10) + Chr(34) + "Hallo" + Chr(34))