1
1
package org .graylog2 .syslog4j .server .impl .event ;
2
2
3
+ import org .joda .time .DateTimeZone ;
4
+
3
5
import java .net .InetAddress ;
6
+ import java .time .ZoneId ;
4
7
import java .time .ZoneOffset ;
5
8
import java .time .ZonedDateTime ;
6
9
import java .time .format .DateTimeFormatter ;
7
10
import java .time .format .DateTimeParseException ;
8
11
import java .util .Calendar ;
9
12
import java .util .Date ;
10
13
import java .util .Locale ;
14
+ import java .util .Objects ;
11
15
12
16
/**
13
17
* CiscoSyslogServerEvent provides an implementation of the
19
23
public class CiscoSyslogServerEvent extends SyslogServerEvent {
20
24
private static final DateTimeFormatter DEFAULT_FORMATTER =
21
25
DateTimeFormatter
22
- .ofPattern ("yyyy MMM ppd HH:mm:ss[.SSS][ zzz]" , Locale .ROOT )
23
- .withZone (ZoneOffset .UTC );
26
+ .ofPattern ("yyyy MMM ppd HH:mm:ss[.SSS][ zzz]" , Locale .ROOT );
24
27
private int sequenceNumber = 0 ;
25
28
26
29
public CiscoSyslogServerEvent (final byte [] message , int length , InetAddress inetAddress ) {
@@ -29,6 +32,12 @@ public CiscoSyslogServerEvent(final byte[] message, int length, InetAddress inet
29
32
initialize (message , length , inetAddress );
30
33
parse ();
31
34
}
35
+ public CiscoSyslogServerEvent (final byte [] message , int length , InetAddress inetAddress , DateTimeZone sysLogServerTimeZone ) {
36
+ super ();
37
+
38
+ initialize (message , length , inetAddress , sysLogServerTimeZone );
39
+ parse ();
40
+ }
32
41
33
42
public CiscoSyslogServerEvent (final String message , InetAddress inetAddress ) {
34
43
super ();
@@ -37,6 +46,13 @@ public CiscoSyslogServerEvent(final String message, InetAddress inetAddress) {
37
46
parse ();
38
47
}
39
48
49
+ public CiscoSyslogServerEvent (final String message , InetAddress inetAddress , DateTimeZone sysLogServerTimeZone ) {
50
+ super ();
51
+
52
+ initialize (message , inetAddress , sysLogServerTimeZone );
53
+ parse ();
54
+ }
55
+
40
56
@ Override
41
57
protected void parsePriority () {
42
58
if (this .message .charAt (0 ) == '<' ) {
@@ -117,7 +133,7 @@ protected void parseDate() {
117
133
if (this .message .length () > dateLength ) {
118
134
boolean isYearMissing = Character .isLetter (message .charAt (0 ));
119
135
String originalDate = this .message .substring (0 , dateLength );
120
- DateTimeFormatter formatter = DEFAULT_FORMATTER ;
136
+ DateTimeFormatter formatter = DEFAULT_FORMATTER . withZone ( getDefaultServerZoneId ()) ;
121
137
122
138
// Hacky override for: "Mar 06 2016 12:53:10 DEVICENAME :"
123
139
if (Character .isDigit (message .charAt (7 ))
@@ -129,7 +145,7 @@ protected void parseDate() {
129
145
originalDate = this .message .substring (0 , dateLength );
130
146
formatter = DateTimeFormatter
131
147
.ofPattern ("MMM ppd yyyy HH:mm:ss" , Locale .ROOT )
132
- .withZone (ZoneOffset . UTC );
148
+ .withZone (getDefaultServerZoneId () );
133
149
}
134
150
135
151
try {
@@ -154,4 +170,8 @@ protected void parseDate() {
154
170
public int getSequenceNumber () {
155
171
return sequenceNumber ;
156
172
}
173
+
174
+ private ZoneId getDefaultServerZoneId () {
175
+ return Objects .isNull (sysLogServerTimeZone ) ? ZoneOffset .UTC : sysLogServerTimeZone .toTimeZone ().toZoneId ();
176
+ }
157
177
}
0 commit comments