hi Tim,
here is the workaround I promised -- it works for the Linux/DGRAM-socket 
systems:

type=Single
ptype=SubStr
pattern=SEC_STARTUP
context=SEC_INTERNAL_EVENT
continue=TakeNext
desc=Load the Socket module and store facility/level values to hashes
action=assign %a 0; eval %a (require Socket); eval %a (exit(1) unless %a); \
       eval %a ( %facility = ( 'kern' => 0, 'user' => 1, 'mail' => 2, \
                 'daemon' => 3, 'auth' => 4, 'syslog' => 5, 'lpr' => 6, \
                 'news' => 7, 'uucp' => 8, 'cron' => 9, 'authpriv' => 10, \
                 'ftp' => 11, 'ntp' => 12, 'local0' => 16, 'local1' => 17, \
                 'local2' => 18, 'local3' => 19, 'local4' => 20, \
                 'local5' => 21, 'local6' => 22, 'local7' => 23 ) ); \
       eval %a ( %level = ('emerg' => 0, 'alert' => 1, 'crit' => 2, \
                           'error' => 3, 'warning' => 4, 'notice' => 5, \
                           'info' => 6, 'debug' => 7) )


type=Single
ptype=RegExp
pattern=(SEC_STARTUP|SEC_RESTART)
context=SEC_INTERNAL_EVENT
desc=Open connection to syslogd and compile the logging routine
action=eval %a ( socket(SOCKET, Socket::PF_UNIX, Socket::SOCK_DGRAM, 0); \
                 connect(SOCKET, Socket::sockaddr_un('/dev/log')) ); \
       eval %syslog ( sub { my($pri) = $facility{$_[0]}*8 + $level{$_[1]}; \
                            my($tag) = $_[2]; my($msg) = $_[3]; \
                            my($time) = scalar(localtime(time())); \
                            substr($time, 0, 4) = ""; \
                            substr($time, -5) = ""; \
                      send(SOCKET, "<$pri>$time $tag: $msg", 0); } )


type=Single
ptype=RegExp
pattern=facility=(\S+) level=(\S+) tag=(\S+) msg=(.*)
desc=log message $4 for program $3 with priority $1.$2
action=call %o %syslog $1 $2 $3 $4


The first two rules only act when SEC is (re)started, and they set up the 
environment for later communication with local syslogd. The actual 
communication is done by the third rule and it is really simple -- it is only a 
matter of calling a function through the pointer in the %syslog variable, with 
facility, level, program name and message text as parameters. Although in the 
case of this example messages are written to /dev/log without the hostname 
field, there could be also unix flavors around which require its presence (and 
hostname must be present if you are opening the socket to a remote syslog 
server).
hope this helps,
risto


--- On Wed, 10/27/10, Tim Peiffer <peif...@umn.edu> wrote:

> From: Tim Peiffer <peif...@umn.edu>
> Subject: Re: [Simple-evcorr-users] New feature requests
> To: "Risto Vaarandi" <rvaara...@yahoo.com>
> Cc: simple-evcorr-users@lists.sourceforge.net
> Date: Wednesday, October 27, 2010, 2:45 AM
> On 10/26/10 4:14 PM, Risto Vaarandi
> wrote:
> > Are you requesting this feature because you would like
> to change the list of configuration files without restarting
> SEC? If so, then you could also take advantage of SEC
> resource file which can be provided with an environment
> variable.
> > As for changing syslog tag field dynamically for every
> message -- unfortunately, the openlog(3) C-library function
> sets the program name for all subsequent logging, so this
> means that connection to syslog would have to be reopened
> and closed for each call to syslog(3) function. I think
> there is no clean way to replace the program name string
> temporarily with something else, so I will have to
> investigate what would be the possible performance penalty
> of opening and closing connection to syslogd for each
> logging attempt.
> > kind regards,
> > risto
> With regards to the list of configuration files.. sometimes
> it is 
> difficult to load all of the -conf=<filename> on the
> command line.  I am 
> interested in providing a clean looking process
> table.  And, it might be 
> nice to change the list of configuration files without a
> restart of 
> SEC.  So if I wished to use a SECRC, an example (this
> is not clear in 
> the documentation) might be
> 
> $SEC/.secrc:
> -input=<input 1>
> -input=<input 2>
> -config=<config 1>
> -config=<config 2>
> -log=<logfile>
> -pid=<pidfile>
> -dump=<dumpfile>
> 
> With regards to syslog tags, since it seems too difficult
> to do, I will 
> assign text to %TAG, and  use that as part of the
> logonly line,
>      logonly %TAG <my message>
> so that the line in syslog comes out looking like ...
>    sec.pl[<pid>] <my tag> <my
> message>
> 
> Relating the two requests:
> If I provide multiple configuration files as above, I might
> want to have 
> a different %TAG for each file, so I would want a way of
> localizing the 
> configuration scope...
> 
> Please advise,
> Tim Peiffer
> 
> -- 
> Tim Peiffer
> Network Support Engineer
> Office of Information Technology
> University of Minnesota/NorthernLights GigaPOP
> 
> +1 612 626-7884 (desk)
> 
> 
> ------------------------------------------------------------------------------
> Nokia and AT&T present the 2010 Calling All
> Innovators-North America contest
> Create new apps & games for the Nokia N8 for consumers
> in  U.S. and Canada
> $10 million total in prizes - $4M cash, 500 devices, nearly
> $6M in marketing
> Develop with Nokia Qt SDK, Web Runtime, or Java and Publish
> to Ovi Store 
> http://p.sf.net/sfu/nokia-dev2dev
> _______________________________________________
> Simple-evcorr-users mailing list
> Simple-evcorr-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users
> 


      

------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
Simple-evcorr-users mailing list
Simple-evcorr-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users

Reply via email to