mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-15 01:49:20 +02:00
Initial implementation
This commit is contained in:
parent
82c78d2e22
commit
705979f7d5
1116
packages/syslog/Makefile
Normal file
1116
packages/syslog/Makefile
Normal file
File diff suppressed because it is too large
Load Diff
13
packages/syslog/Makefile.fpc
Normal file
13
packages/syslog/Makefile.fpc
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#
|
||||||
|
# Makefile.fpc for CGI Units
|
||||||
|
#
|
||||||
|
|
||||||
|
[targets]
|
||||||
|
units=systemlog
|
||||||
|
examples=testlog
|
||||||
|
|
||||||
|
[install]
|
||||||
|
sourcesubdir=packages
|
||||||
|
|
||||||
|
[dirs]
|
||||||
|
fpcdir=../..
|
155
packages/syslog/systemlog.pp
Normal file
155
packages/syslog/systemlog.pp
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
unit systemlog;
|
||||||
|
{$mode objfpc}
|
||||||
|
{$linklib c}
|
||||||
|
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
{ C default packing is dword }
|
||||||
|
|
||||||
|
{$PACKRECORDS 4}
|
||||||
|
|
||||||
|
const
|
||||||
|
_PATH_LOG = '/dev/log';
|
||||||
|
|
||||||
|
LOG_EMERG = 0;
|
||||||
|
LOG_ALERT = 1;
|
||||||
|
LOG_CRIT = 2;
|
||||||
|
LOG_ERR = 3;
|
||||||
|
LOG_WARNING = 4;
|
||||||
|
LOG_NOTICE = 5;
|
||||||
|
LOG_INFO = 6;
|
||||||
|
LOG_DEBUG = 7;
|
||||||
|
LOG_PRIMASK = $07;
|
||||||
|
|
||||||
|
LOG_KERN = 0 shl 3;
|
||||||
|
LOG_USER = 1 shl 3;
|
||||||
|
LOG_MAIL = 2 shl 3;
|
||||||
|
LOG_DAEMON = 3 shl 3;
|
||||||
|
LOG_AUTH = 4 shl 3;
|
||||||
|
LOG_SYSLOG = 5 shl 3;
|
||||||
|
LOG_LPR = 6 shl 3;
|
||||||
|
LOG_NEWS = 7 shl 3;
|
||||||
|
LOG_UUCP = 8 shl 3;
|
||||||
|
LOG_CRON = 9 shl 3;
|
||||||
|
LOG_AUTHPRIV = 10 shl 3;
|
||||||
|
LOG_FTP = 11 shl 3;
|
||||||
|
LOG_LOCAL0 = 16 shl 3;
|
||||||
|
LOG_LOCAL1 = 17 shl 3;
|
||||||
|
LOG_LOCAL2 = 18 shl 3;
|
||||||
|
LOG_LOCAL3 = 19 shl 3;
|
||||||
|
LOG_LOCAL4 = 20 shl 3;
|
||||||
|
LOG_LOCAL5 = 21 shl 3;
|
||||||
|
LOG_LOCAL6 = 22 shl 3;
|
||||||
|
LOG_LOCAL7 = 23 shl 3;
|
||||||
|
LOG_NFACILITIES = 24;
|
||||||
|
LOG_FACMASK = $03f8;
|
||||||
|
INTERNAL_NOPRI = $10;
|
||||||
|
INTERNAL_MARK = LOG_NFACILITIES shl 3;
|
||||||
|
type
|
||||||
|
|
||||||
|
CODE = record
|
||||||
|
name : string[10];
|
||||||
|
val : longint;
|
||||||
|
end;
|
||||||
|
const
|
||||||
|
prioritynames : Array [1..12] of code =
|
||||||
|
( (name : 'alert'; val : LOG_ALERT ),
|
||||||
|
( name : 'crit'; val : LOG_CRIT ),
|
||||||
|
( name : 'debug'; val : LOG_DEBUG ),
|
||||||
|
( name : 'emerg'; val : LOG_EMERG ),
|
||||||
|
( name : 'err';val : LOG_ERR ),
|
||||||
|
( name : 'error'; val : LOG_ERR ),
|
||||||
|
( name : 'info';val : LOG_INFO ),
|
||||||
|
( name : 'none'; val : INTERNAL_NOPRI ),
|
||||||
|
( name : 'notice'; val : LOG_NOTICE ),
|
||||||
|
( name : 'panic'; val : LOG_EMERG ),
|
||||||
|
( name : 'warn'; val : LOG_WARNING ),
|
||||||
|
( name : 'warning'; val : LOG_WARNING )
|
||||||
|
);
|
||||||
|
|
||||||
|
const
|
||||||
|
|
||||||
|
facilitynames : array [1..22] of code =
|
||||||
|
(
|
||||||
|
( name : 'auth'; val : LOG_AUTH ),
|
||||||
|
( name : 'authpriv'; val : LOG_AUTHPRIV ),
|
||||||
|
( name : 'cron'; val : LOG_CRON ),
|
||||||
|
( name : 'daemon'; val : LOG_DAEMON ),
|
||||||
|
( name : 'ftp'; val : LOG_FTP ),
|
||||||
|
( name : 'kern'; val : LOG_KERN ),
|
||||||
|
( name : 'lpr'; val : LOG_LPR ),
|
||||||
|
( name : 'mail'; val : LOG_MAIL ),
|
||||||
|
( name : 'mark'; val : INTERNAL_MARK ),
|
||||||
|
( name : 'news'; val : LOG_NEWS ),
|
||||||
|
( name : 'security'; val : LOG_AUTH ),
|
||||||
|
( name : 'syslog'; val : LOG_SYSLOG ),
|
||||||
|
( name : 'user'; val : LOG_USER ),
|
||||||
|
( name : 'uucp'; val : LOG_UUCP ),
|
||||||
|
( name : 'local0'; val : LOG_LOCAL0 ),
|
||||||
|
( name : 'local1'; val : LOG_LOCAL1 ),
|
||||||
|
( name : 'local2'; val : LOG_LOCAL2 ),
|
||||||
|
( name : 'local3'; val : LOG_LOCAL3 ),
|
||||||
|
( name : 'local4'; val : LOG_LOCAL4 ),
|
||||||
|
( name : 'local5'; val : LOG_LOCAL5 ),
|
||||||
|
( name : 'local6'; val : LOG_LOCAL6 ),
|
||||||
|
( name : 'local7'; val : LOG_LOCAL7 )
|
||||||
|
);
|
||||||
|
|
||||||
|
const
|
||||||
|
LOG_PID = $01;
|
||||||
|
LOG_CONS = $02;
|
||||||
|
LOG_ODELAY = $04;
|
||||||
|
LOG_NDELAY = $08;
|
||||||
|
LOG_NOWAIT = $10;
|
||||||
|
LOG_PERROR = $20;
|
||||||
|
|
||||||
|
|
||||||
|
function LOG_PRI(p : longint) : longint;
|
||||||
|
function LOG_MAKEPRI(fac,pri : longint) : longint;
|
||||||
|
function LOG_FAC(p : longint) : longint;
|
||||||
|
function LOG_MASK(pri : longint) : longint;
|
||||||
|
function LOG_UPTO(pri : longint) : longint;
|
||||||
|
|
||||||
|
procedure closelog;cdecl;
|
||||||
|
|
||||||
|
procedure openlog(__ident:pchar; __option:longint; __facilit:longint);cdecl;
|
||||||
|
function setlogmask(__mask:longint):longint;cdecl;
|
||||||
|
procedure syslog(__pri:longint; __fmt:pchar; args:array of const);cdecl;
|
||||||
|
// procedure vsyslog(__pri:longint; __fmt:pchar; __ap:_BSD_VA_LIST_);cdecl;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
function LOG_PRI(p : longint) : longint;
|
||||||
|
begin
|
||||||
|
LOG_PRI:=p and LOG_PRIMASK;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function LOG_MAKEPRI(fac,pri : longint) : longint;
|
||||||
|
begin
|
||||||
|
LOG_MAKEPRI:=(fac shl 3) or pri;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function LOG_FAC(p : longint) : longint;
|
||||||
|
begin
|
||||||
|
LOG_FAC:=(p and (LOG_FACMASK)) shr 3;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function LOG_MASK(pri : longint) : longint;
|
||||||
|
begin
|
||||||
|
LOG_MASK:=1 shl pri;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function LOG_UPTO(pri : longint) : longint;
|
||||||
|
begin
|
||||||
|
LOG_UPTO:=(1 shl (pri + 1)) - 1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure closelog;cdecl;external;
|
||||||
|
procedure openlog(__ident:pchar; __option:longint; __facilit:longint);cdecl;external;
|
||||||
|
function setlogmask(__mask:longint):longint;cdecl;external;
|
||||||
|
procedure syslog(__pri:longint; __fmt:pchar; args:array of const);cdecl;external;
|
||||||
|
// procedure vsyslog(__pri:longint; __fmt:pchar; __ap:_BSD_VA_LIST_);cdecl;external;
|
||||||
|
|
||||||
|
end.
|
22
packages/syslog/testlog.pp
Normal file
22
packages/syslog/testlog.pp
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
program testlog;
|
||||||
|
|
||||||
|
uses linux,systemlog,sysutils;
|
||||||
|
|
||||||
|
procedure dotest;
|
||||||
|
|
||||||
|
var i : longint;
|
||||||
|
prefix : ansistring;
|
||||||
|
|
||||||
|
begin
|
||||||
|
i:=getpid;
|
||||||
|
prefix:=format('testlog[%d] ',[i]);
|
||||||
|
// prefix will be prepended to every message now.
|
||||||
|
openlog(pchar(prefix),LOG_NOWAIT,LOG_DEBUG);
|
||||||
|
for i:=1 to 10 do
|
||||||
|
syslog(log_info,'This is message number %d'#10,[i]);
|
||||||
|
prefix:='';
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
dotest;
|
||||||
|
end.
|
Loading…
Reference in New Issue
Block a user