Suppress NXLog Error Logging from Specific Module
Hi,
I am using NXLog to run a script via im_exec
and the internal restart true
feature which restarts my script when it ends.
The thing I'm noticing is that it's filling up the nxlog.log file with error conditions because the script stopped.
ERROR Module test got EOF, process exited?
The script is restarting deliberately so I don't need to know about these specific messages from this specific module.
How can I suppress error logging from a specific module?
Have a wonderful day!
NOTE: I was able to get it working a different way.
The solution involves executing a script on startup to get the initial useful data and send it to a log file. From there NXLog searches for that file and copies it to gateway.log
. The input module im_file
then reads that file which initiates the heartbeat. The way that im_file
works is that it caches the file and won’t read from it again unless the file changes(modifying last modified doesn’t appear to count as a change). To that end I added logic that would periodically delete and re-copy the file. In this way im_file
has a new file to read from, and thus send the heartbeat.
While NXLog logs when the new files are read, they are logged as WARNING, not ERROR, so you can set the LogLevel
to ERROR
<Extension _filedelete>
Module xm_fileop
<Schedule>
Every 25 sec
<Exec>
if file_exists('%GATEWAY%.log') file_remove('%GATEWAY%.log');
if file_exists('%GATEWAY%') file_copy('%GATEWAY%', '%GATEWAY%.log');
</Exec>
</Schedule>
</Extension>
<Input ipGateway>
Module im_file
PollInterval 60
ReadFromLast false
SavePos false
File '%GATEWAY%.log'
<Exec>
$gateway = $raw_event;
</Exec>
</Input>
This is not meant to be some kind of groundbreaking discovery. I only post it here in case someone else ends up trying to figure out this requirement.
Hope this helps!