File: syslog.t

package info (click to toggle)
liblog-fast-perl 2.0.1-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 164 kB
  • sloc: perl: 324; makefile: 2
file content (122 lines) | stat: -rw-r--r-- 3,594 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
use warnings;
use strict;
use Test::More;
use Socket;

use Log::Fast;


if ($^O =~ /Win/xms) {
    plan skip_all => 'not availaible on Windows';
} else {
    plan tests => 19;
}


use constant PATH => "/tmp/log.$$.sock";

socket my $Srv, AF_UNIX, SOCK_DGRAM, 0  or die "socket: $!";
bind $Srv, sockaddr_un(PATH)            or die "bind: $!";
END { unlink PATH }
sub _log()  { sysread $Srv, my $buf, 8192 or die "sysread: $!"; return $buf }

our $LOG = Log::Fast->new({
    type    => 'unix',
    path    => PATH,
});

my $H = qr/\A<11>\w\w\w [ \d]\d \d\d:\d\d:\d\d syslog\.t\[$$\]:/ms;


$LOG->ERR('msg');
like _log, qr/$H msg\z/ms,          'defaults';

$LOG->config({
    add_timestamp   => 0,
    add_hostname    => 0,
    add_pid         => 0,
});
$H = qr/\A<11>syslog\.t:/ms;
$LOG->ERR('msg');
like _log, qr/$H msg\z/ms,          'minimum features';

$H = qr/\A<12>syslog\.t:/ms;
$LOG->WARN('msg');
like _log, qr/$H msg\z/ms,          'levels: WARN';
$H = qr/\A<13>syslog\.t:/ms;
$LOG->NOTICE('msg');
like _log, qr/$H msg\z/ms,          'levels: NOTICE';
$H = qr/\A<14>syslog\.t:/ms;
$LOG->INFO('msg');
like _log, qr/$H msg\z/ms,          'levels: INFO';
$H = qr/\A<15>syslog\.t:/ms;
$LOG->DEBUG('msg');
like _log, qr/$H msg\z/ms,          'levels: DEBUG';

use Sys::Syslog qw( LOG_DAEMON LOG_AUTH LOG_USER );
$LOG->config({ facility => LOG_DAEMON });
$H = qr/\A<27>syslog\.t:/ms;
$LOG->ERR('msg');
like _log, qr/$H msg\z/ms,          'facilities: daemon';
$LOG->config({ facility => LOG_AUTH });
$H = qr/\A<35>syslog\.t:/ms;
$LOG->ERR('msg');
like _log, qr/$H msg\z/ms,          'facilities: auth';
$LOG->config({ facility => LOG_USER });
$H = qr/\A<11>syslog\.t:/ms;
$LOG->ERR('msg');
like _log, qr/$H msg\z/ms,          'facilities: user';

$LOG->config({ add_timestamp => 1 });
$H = qr/\A<11>\w\w\w [ \d]\d \d\d:\d\d:\d\d syslog\.t:/ms;
$LOG->ERR('msg');
like _log, qr/$H msg\z/ms,          'feature: timestamp';
$LOG->config({ add_timestamp => 0 });

use Sys::Hostname;
$LOG->config({ add_hostname => 1 });
$H = qr/\A<11>\Q${\ hostname }\E syslog\.t:/ms;
$LOG->ERR('msg');
like _log, qr/$H msg\z/ms,          'feature: hostname (default)';
$LOG->config({ hostname => 'myhost' });
$H = qr/\A<11>myhost syslog\.t:/ms;
$LOG->ERR('msg');
like _log, qr/$H msg\z/ms,          'feature: hostname (user-defined)';
$LOG->config({ add_hostname => 0 });

$LOG->ident('myapp');
$H = qr/\A<11>myapp:/ms;
$LOG->ERR('msg');
like _log, qr/$H msg\z/ms,          'ident';

is $LOG->ident(), 'myapp',          'current ident without change';
is $LOG->ident('myapp2'), 'myapp',  'previous ident on change';
is $LOG->ident('myapp'), 'myapp2',  'previous ident on change';

$LOG->config({ add_pid => 1 });
$H = qr/\A<11>myapp\[$$\]:/ms;
$LOG->ERR('msg');
like _log, qr/$H msg\z/ms,          'feature: pid (default)';
$LOG->config({ pid => 31337 });
$H = qr/\A<11>myapp\[31337\]:/ms;
$LOG->ERR('msg');
like _log, qr/$H msg\z/ms,          'feature: pid (user-defined)';
$LOG->config({ add_pid => 0 });

$LOG->config({
    prefix          => '%S %D %T [%L]%_%P->%F %%',
    facility        => LOG_DAEMON,
    add_timestamp   => 1,
    add_hostname    => 1,
    hostname        => 'somehost',
    ident           => 'тест',
    add_pid         => 1,
    pid             => 65535,
});
$H = qr/\A<31>\w\w\w [ \d]\d \d\d:\d\d:\d\d somehost тест\[65535\]:/ms;
my $P = qr/\d+\.\d{5} 20\d\d-\d\d-\d\d \d\d:\d\d:\d\d \[DEBUG\] main-> %/ms;
$LOG->DEBUG('сообщение');
my $msg = _log;
utf8::decode($msg);
like $msg, qr/$H ${P}сообщение\z/ms,          'everything (prefix, features, unicode)';