In message
<CAHkPr1EvbEF3LRZWhB7zyRTxVYBnQGWD=9yvvkhx99wupcj...@mail.gmail.com> ,
Orangepeel Beef writes:
>Hi guys, i'm using syslog-ng with SEC using the program stream.  I have 2
>issues.
>
>1:  Write to file w/ date in the name..
>
>trying to do something like this, but haven't gotten it working..
>
>type=single
>desc=Set log file and addressee list
>ptype=substr
>pattern=SEC_STARTUP
>context=SEC_INTERNAL_EVENT
>action=eval %d ( $date = strftime "%Y-%m-%d", localtime;);\
>        assign %f /opt/log/remote-bytype/comware-%d.log;
>
>type=single
>desc=Log messages to file
>ptype=regexp
>pattern=(.+)
>action=write %f $1
>

Try:

action= eval %r (use POSIX qw(strftime);); \
        eval %d ( $date = strftime "%%Y-%%m-%%d", localtime; return $date;); \
       assign %f /opt/log/remote-bytype/comware-%d.log;

You need to load the POSIX lib so strftime was defined. Then the
original %Y %m %d need to be escaped, they were being replaced by
nothing.

To test, put the rules (with my modified action) in the file called
s.sr and run:

  sec -input - -conf s.sr -intevent

and you will see:

  SEC (Simple Event Correlator) 2.7.2
  Reading configuration from s
  2 rules loaded from s
  Opening input file -
  Stdin connected to terminal, SIGINT can't be used for changing the logging 
level
  Creating SEC internal context 'SEC_INTERNAL_EVENT'
  Creating SEC internal event 'SEC_STARTUP'
  Evaluating code 'use POSIX qw(strftime);' and setting variable '%r'
  No value received for variable '%r', set to undef
  Evaluating code '$date = strftime "%Y-%m-%d", localtime; return $date;' and 
setting variable '%d'
  Variable '%d' set to '2013-06-24'
  Assigning '/opt/log/remote-bytype/comware-2013-06-24.log' to variable '%f'
  Deleting SEC internal context 'SEC_INTERNAL_EVENT'

With your action I saw:

  Evaluating code '$date = strftime "--", localtime; return $date;' and setting 
variable '%d'

note the missing %Y... as they got expanded/replaced. Then you see
Perl errors like:

  Unquoted string "strftime" may clash with future reserved word at (eval 3) 
line 1
  Error evaluating code '$date = strftime "--", localtime; return $date;': 
syntax error at (eval 3) line 1, near "strftime "--""

because of the missing 'use POSIX ...'. You can test your eval actions
by putting them in a perl script and trying to run it. If you had put
your actions in a file and run perl on the file they would have failed
in a similar manner but in a more easily debugged form.

--
                                -- rouilj
John Rouillard
===========================================================================
My employers don't acknowledge my existence much less my opinions.

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
Simple-evcorr-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users

Reply via email to