diff --git a/doc/aix-errlogger.md b/doc/aix-errlogger.md index 6f59d7e..7aee1d7 100644 --- a/doc/aix-errlogger.md +++ b/doc/aix-errlogger.md @@ -39,7 +39,7 @@ refresh -s syslogd ### Forward errlogger to the local syslog -We configure the errloger to forward messages to the local syslog service. +We configure the AIX [error logger](https://www.ibm.com/docs/en/aix/7.3?topic=concepts-error-logging-overview) to forward messages to the local syslog service. Create an odm errnotify logging template file: diff --git a/doc/readme-service.md b/doc/readme-service.md index dd1265a..ed9e74e 100644 --- a/doc/readme-service.md +++ b/doc/readme-service.md @@ -1,11 +1,11 @@ -# Syslogd as a System Service +# Syslogd as a system service -## Systemd +## For systemd -Edit the **syslogd.service** and configure required options. +To install as a systemd service, copy the [syslogd.service](syslogd.service) +file into */etc/systemd/system/*, edit the file and configure your required options. -To install as a systemd service, copy the **syslogd.service** -file into */etc/systemd/system/* and enable the service: +Enable and start the service: ```shell systemctl daemon-reload diff --git a/gradle.properties b/gradle.properties index fe1d807..0b748d6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ id = syslogd name = syslogd group = biz.nellemann.syslogd -version = 1.3.2 +version = 1.3.3 description = "Syslog Director" diff --git a/settings.gradle b/settings.gradle index 364bb2a..1958cc0 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,10 +1 @@ -/* - * This file was generated by the Gradle 'init' task. - * - * The settings file is used to specify which projects to include in your build. - * - * Detailed information about configuring a multi-project build in Gradle can be found - * in the user manual at https://docs.gradle.org/6.6.1/userguide/multi_project_builds.html - */ - rootProject.name = 'syslogd' diff --git a/src/main/java/biz/nellemann/syslogd/parser/SyslogParserRfc3164.java b/src/main/java/biz/nellemann/syslogd/parser/SyslogParserRfc3164.java index a42394b..f32ca0c 100644 --- a/src/main/java/biz/nellemann/syslogd/parser/SyslogParserRfc3164.java +++ b/src/main/java/biz/nellemann/syslogd/parser/SyslogParserRfc3164.java @@ -31,7 +31,7 @@ public class SyslogParserRfc3164 extends SyslogParser { private final static Logger log = LoggerFactory.getLogger(SyslogParserRfc3164.class); - private final Pattern pattern = Pattern.compile("^<(\\d{1,3})>(\\D{3}\\s+\\d{1,2} \\d{2}:\\d{2}:\\d{2})\\s+(Message forwarded from \\S+:|\\S+)\\s+([^\\s:]+):?\\s+(.*)", Pattern.CASE_INSENSITIVE); + private final Pattern pattern = Pattern.compile("^<(\\d{1,3})>(\\D{3}\\s+\\d{1,2} \\d{2}:\\d{2}:\\d{2})\\s+(Message forwarded from \\S+:|\\S+:?)\\s+([^\\s:]+):?\\s+(.*)", Pattern.CASE_INSENSITIVE); private final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy MMM [ ]d HH:mm:ss").withZone(ZoneId.systemDefault()); /** diff --git a/src/main/java/biz/nellemann/syslogd/parser/SyslogParserRfc5424.java b/src/main/java/biz/nellemann/syslogd/parser/SyslogParserRfc5424.java index f67a5ad..2d6de23 100644 --- a/src/main/java/biz/nellemann/syslogd/parser/SyslogParserRfc5424.java +++ b/src/main/java/biz/nellemann/syslogd/parser/SyslogParserRfc5424.java @@ -33,7 +33,7 @@ public class SyslogParserRfc5424 extends SyslogParser { private final static Logger log = LoggerFactory.getLogger(SyslogParserRfc5424.class); - private final Pattern pattern = Pattern.compile("^<(\\d{1,3})>(\\d+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\[.*\\]|-)\\s+(\\S+)", Pattern.CASE_INSENSITIVE); + private final Pattern pattern = Pattern.compile("^<(\\d{1,3})>(\\d+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\[.*\\]|-)\\s+(.*)", Pattern.CASE_INSENSITIVE); /** * Parses [rfc5424](https://tools.ietf.org/html/rfc5424) syslog messages. diff --git a/src/test/groovy/biz/nellemann/syslogd/SyslogParserRfc3164Test.groovy b/src/test/groovy/biz/nellemann/syslogd/SyslogParserRfc3164Test.groovy index 5f8057a..e55d7e6 100644 --- a/src/test/groovy/biz/nellemann/syslogd/SyslogParserRfc3164Test.groovy +++ b/src/test/groovy/biz/nellemann/syslogd/SyslogParserRfc3164Test.groovy @@ -50,13 +50,13 @@ class SyslogParserRfc3164Test extends Specification { void "test rfc3164 normal message"() { setup: - def input = "<13>Sep 23 08:53:28 xps13 mark: adfdfdf3432434" + def input = "<13>Sep 23 08:53:28 xps13 mark: adfdfdf3432434 abcdefghijklmnopqrstuvwxyz" when: SyslogMessage msg = syslogParser.parse(input) then: - msg.message == "adfdfdf3432434" + msg.message == "adfdfdf3432434 abcdefghijklmnopqrstuvwxyz" msg.hostname == "xps13" msg.application == "mark" } diff --git a/src/test/groovy/biz/nellemann/syslogd/SyslogParserRfc5424Test.groovy b/src/test/groovy/biz/nellemann/syslogd/SyslogParserRfc5424Test.groovy index 13e7f65..248c76f 100644 --- a/src/test/groovy/biz/nellemann/syslogd/SyslogParserRfc5424Test.groovy +++ b/src/test/groovy/biz/nellemann/syslogd/SyslogParserRfc5424Test.groovy @@ -40,6 +40,7 @@ class SyslogParserRfc5424Test extends Specification { msg.application == "su" msg.messageId == "ID47" msg.processId == null + msg.message == "BOM'su root' failed for lonvick on /dev/pts/8" } void "test rfc5424 example2 message"() { diff --git a/src/test/groovy/biz/nellemann/syslogd/SyslogPrinterTest.groovy b/src/test/groovy/biz/nellemann/syslogd/SyslogPrinterTest.groovy index b8fe4b7..c1d51d9 100644 --- a/src/test/groovy/biz/nellemann/syslogd/SyslogPrinterTest.groovy +++ b/src/test/groovy/biz/nellemann/syslogd/SyslogPrinterTest.groovy @@ -10,10 +10,23 @@ class SyslogPrinterTest extends Specification { void setup() { } + void "to plain"() { + setup: + SyslogParser syslogParser = new SyslogParserRfc5424(); + String input = '<13>1 2020-09-23T08:57:30.950699+02:00 xps13 mark - - [exampleSDID@32473 iut="3" eventSource="Application" eventID="1011"] adfdfdf3432434565656 abcdefghijklmnopqrstuvwxyz' + SyslogMessage msg = syslogParser.parse(input) + + when: + String output = SyslogPrinter.toString(msg) + + then: + output.endsWith("abcdefghijklmnopqrstuvwxyz") + } + void "test toGelf"() { setup: SyslogParser syslogParser = new SyslogParserRfc5424(); - String input = '<13>1 2020-09-23T08:57:30.950699+02:00 xps13 mark - - [exampleSDID@32473 iut="3" eventSource="Application" eventID="1011"] adfdfdf3432434565656' + String input = '<13>1 2020-09-23T08:57:30.950699+02:00 xps13 mark - - [exampleSDID@32473 iut="3" eventSource="Application" eventID="1011"] adfdfdf3432434565656 abcdefghijklmnopqrstuvwxyz' SyslogMessage msg = syslogParser.parse(input) when: @@ -26,14 +39,14 @@ class SyslogPrinterTest extends Specification { void "test toLoki"() { setup: SyslogParser syslogParser = new SyslogParserRfc5424(); - String input = '<13>1 2020-09-23T08:57:30.950699+02:00 xps13 mark - - [exampleSDID@32473 iut="3" eventSource="Application" eventID="1011"] adfdfdf3432434565656' + String input = '<13>1 2020-09-23T08:57:30.950699+02:00 xps13 mark - - [exampleSDID@32473 iut="3" eventSource="Application" eventID="1011"] adfdfdf3432434565656 abcdefghijklmnopqrstuvwxyz' SyslogMessage msg = syslogParser.parse(input) when: String output = SyslogPrinter.toLoki(msg) then: - output == '{ "streams": [ { "stream": { "hostname": "xps13", "facility": "user", "level": "notice", "application": "mark"}, "values": [ [ "1600845200000000000", "[user.notice] xps13 mark adfdfdf3432434565656" ] ] } ] }' + output == '{ "streams": [ { "stream": { "hostname": "xps13", "facility": "user", "level": "notice", "application": "mark"}, "values": [ [ "1600845200000000000", "[user.notice] xps13 mark adfdfdf3432434565656 abcdefghijklmnopqrstuvwxyz" ] ] } ] }' } }