splog 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.gitignore +54 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +150 -0
- data/Rakefile +1 -0
- data/bin/splog +5 -0
- data/examples/.splog.yml +96 -0
- data/examples/access_log +50 -0
- data/lib/splog/version.rb +3 -0
- data/lib/splog.rb +495 -0
- data/splog.gemspec +29 -0
- data/test/examples/apache/.splog.yml +39 -0
- data/test/examples/apache/access_log +50 -0
- data/test/examples/apache/debug_error_log +15 -0
- data/test/examples/apache/simple_access_log +2 -0
- data/test/examples/jboss/.splog.yml +47 -0
- data/test/examples/jboss/multiline_match_server.log +5 -0
- data/test/examples/jboss/multiline_match_unmatch_server.log +9 -0
- data/test/splog_spec.rb +287 -0
- metadata +142 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MGQ5MTc5ZGUwMGJjNGE0NDBiZWViMWIzYmY3M2JkODZhNDMzMGJiOQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NmIxNDZjZDdjYTlkMDU3NmQ2YzQzOGRjYWExNjUyY2IzNDg2YWJhNw==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NTk2OTlhOWU0ZTJlNzQxOTkxYTg4NTNmOWZiNTQyNzYyMzY5ODg1MzFjYjFl
|
10
|
+
YzVjMzVlMTE4YTM3N2M5ZGVmZDVkZTQ1YTRjNmYyNjRiZGMzYmYzMDZmMDlk
|
11
|
+
MjMxY2U5OTZlODZkN2VkZmZmYWI1MzY5ZWE4NDk2NDE0NjY0OGI=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZDk3ZjQxZTA3YWZlOWZkYzc1OWEzNWVhZjAxMzc4Yjg4NzE2NGQ1MGZlNjQz
|
14
|
+
YWMzY2NhMGM0MjBmNzY0Y2M1MDMyZGI0ZGNlMjdhMjlhYTkzMmMyYWIxNjhh
|
15
|
+
ZDdmOGE3OWMzNDhiZjNjYTdjMzBkNjQxMjk5MTkwN2IyMTk1YTk=
|
data/.gitignore
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
# OS X
|
2
|
+
.DS_Store
|
3
|
+
.AppleDouble
|
4
|
+
.LSOverride
|
5
|
+
Icon
|
6
|
+
|
7
|
+
|
8
|
+
# Thumbnails
|
9
|
+
._*
|
10
|
+
#
|
11
|
+
# # Files that might appear on external disk
|
12
|
+
.Spotlight-V100
|
13
|
+
.Trashes
|
14
|
+
|
15
|
+
# Jetbrains
|
16
|
+
.idea
|
17
|
+
|
18
|
+
*.gem
|
19
|
+
*.rbc
|
20
|
+
.bundle
|
21
|
+
.config
|
22
|
+
.yardoc
|
23
|
+
Gemfile.lock
|
24
|
+
InstalledFiles
|
25
|
+
_yardoc
|
26
|
+
coverage
|
27
|
+
doc/
|
28
|
+
lib/bundler/man
|
29
|
+
pkg
|
30
|
+
rdoc
|
31
|
+
spec/reports
|
32
|
+
test/tmp
|
33
|
+
test/version_tmp
|
34
|
+
tmp
|
35
|
+
|
36
|
+
### Ruby ###
|
37
|
+
*.gem
|
38
|
+
*.rbc
|
39
|
+
.bundle
|
40
|
+
.config
|
41
|
+
coverage
|
42
|
+
InstalledFiles
|
43
|
+
lib/bundler/man
|
44
|
+
pkg
|
45
|
+
rdoc
|
46
|
+
spec/reports
|
47
|
+
test/tmp
|
48
|
+
test/version_tmp
|
49
|
+
tmp
|
50
|
+
|
51
|
+
# YARD artifacts
|
52
|
+
.yardoc
|
53
|
+
_yardoc
|
54
|
+
doc/
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Samuel Mendenhall
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
# Splog -- Simple Log Parsing
|
2
|
+
|
3
|
+
Splog allows you to define simple regular expressions in a yaml file that determine how to parse each line of any log file.
|
4
|
+
|
5
|
+
There are many similar solutions out in the wild but no solution that was simple and concise and could be configured to work with most any logfile. Most solutions are locked into a particular format, like Apache logs, or behind a paywall.
|
6
|
+
|
7
|
+
Splog solves this by allowing you to define regular expressions to split apart a line, any line, from any file, into a hash and even mapping the regular expression groups to various types like a DateTime or an Integer.
|
8
|
+
|
9
|
+
Splog also provides a feature that few other existing solutions do, and that is what I'll call fast forward parsing of a log. Let's say you have a Java app server log that has exceptions. Those exceptions should roll up into the originating log line. That can be easily configured by setting a match forward regular expression.
|
10
|
+
|
11
|
+
By default unmatched lines are rolled into the previously matche line. This also passively solves the issue of multiline log files which really should be one log entry with multiple lines.
|
12
|
+
|
13
|
+
|
14
|
+
## Installation
|
15
|
+
|
16
|
+
Add this line to your application's Gemfile:
|
17
|
+
|
18
|
+
gem 'splog'
|
19
|
+
|
20
|
+
And then execute:
|
21
|
+
|
22
|
+
$ bundle
|
23
|
+
|
24
|
+
Or install it yourself as:
|
25
|
+
|
26
|
+
$ gem install splog
|
27
|
+
|
28
|
+
If you want to persist to mongo make sure you have mongo installed: http://www.mongodb.org/downloads
|
29
|
+
|
30
|
+
## Usage
|
31
|
+
|
32
|
+
#### Getting started
|
33
|
+
|
34
|
+
* Install splog
|
35
|
+
* Create a ~/.splog.yml -- The quickest approach here is to copy from https://github.com/engineersamuel/splog/blob/master/examples/.splog.yml which has several patterns to get you started.
|
36
|
+
* Run splog on a log file! See the the Example section below.
|
37
|
+
|
38
|
+
#### Pretty printing json
|
39
|
+
|
40
|
+
There are many libraries out there to pretty print json. I happen to be partial to https://github.com/rafeca/prettyjson
|
41
|
+
|
42
|
+
#### Examples
|
43
|
+
|
44
|
+
If you want to test a pattern on a large log file just head that file and pipe it to splog
|
45
|
+
|
46
|
+
head -n 2 path_to/some_log | splog -p pattern_name -o json | prettyjson
|
47
|
+
|
48
|
+
Parsing an Apache access log to stdout by specifying the filename directly. The default output is stdout so no need to specify that directly
|
49
|
+
|
50
|
+
splog -p apache_common -f path_to/access_log
|
51
|
+
|
52
|
+
Same command with piping
|
53
|
+
|
54
|
+
cat path_to/apache_log | splog -p apache_common
|
55
|
+
|
56
|
+
And if you just want to test that the pattern is working with the log file and the log file is huge, head the results and pipe them
|
57
|
+
|
58
|
+
head -n 10 examples/access_log | splog -p apache_common
|
59
|
+
|
60
|
+
Of course it isn't so easy to tell from stdout if the logs were parsed, I recommend json for that. This will give you a clear visual that all logs were parsed as you expected them to be parsed
|
61
|
+
|
62
|
+
head -n 10 examples/access_log | splog -p apache_common -o json | prettyjson
|
63
|
+
|
64
|
+
Setting a custom key on each parsed line
|
65
|
+
|
66
|
+
head -n 10 examples/access_log | splog -p apache_common -o json -k server_1
|
67
|
+
|
68
|
+
Disabling the md5 on the hash
|
69
|
+
|
70
|
+
head -n 10 examples/access_log | splog -p apache_common -o json -k server_1 --no-md5
|
71
|
+
|
72
|
+
Persisting the log to mongo. Set -o with no arg so that no output to stdout. The -d mongo says look in yaml for a `db_refs` key of mongo and read the database infomration to persist to. Since the default is to hash the parsed log entry to `_id` then repeated executions of the command will result in no duplicated mongo entries.
|
73
|
+
|
74
|
+
head -n 2 examplese/access_log | splog -p apache_common -o -k server_1 -d mongo
|
75
|
+
monogo; use splog; db.logs.find().pretty()
|
76
|
+
{
|
77
|
+
"_id" : "e2304358eb62489fae8beb78d90a39a8",
|
78
|
+
"Host" : "127.0.0.103",
|
79
|
+
"Identity" : "-",
|
80
|
+
"User" : "-",
|
81
|
+
"Time" : ISODate("2013-10-03T16:31:00Z"),
|
82
|
+
"Request" : "STATUS / HTTP/1.0",
|
83
|
+
"Status" : 200,
|
84
|
+
"Size" : 86,
|
85
|
+
"Referer" : "-",
|
86
|
+
"UserAgent" : "ClusterListener/1.0",
|
87
|
+
"key" : "server1"
|
88
|
+
}
|
89
|
+
{
|
90
|
+
"_id" : "1507c52901c51ea2cc7ca687187c82e5",
|
91
|
+
"Host" : "127.0.0.224",
|
92
|
+
"Identity" : "-",
|
93
|
+
"User" : "-",
|
94
|
+
"Time" : ISODate("2013-10-03T16:31:03Z"),
|
95
|
+
"Request" : "STATUS / HTTP/1.0",
|
96
|
+
"Status" : 200,
|
97
|
+
"Size" : 86,
|
98
|
+
"Referer" : "-",
|
99
|
+
"UserAgent" : "ClusterListener/1.0",
|
100
|
+
"key" : "server1"
|
101
|
+
}
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
## Contributing
|
106
|
+
|
107
|
+
1. Fork it
|
108
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
109
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
110
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
111
|
+
5. Create new Pull Request
|
112
|
+
|
113
|
+
## Building Splog in Development
|
114
|
+
|
115
|
+
`rake build`
|
116
|
+
`rake release`
|
117
|
+
|
118
|
+
#### Examples of executing the bin/splog in development
|
119
|
+
|
120
|
+
ruby -Ilib ./bin/splog
|
121
|
+
ruby -Ilib ./bin/splog -p apache_common -f test/examples/apache/simple_access_log -o json
|
122
|
+
ruby -Ilib ./bin/splog -p apache_common -f test/examples/apache/simple_access_log -o json | prettyjson
|
123
|
+
ruby -Ilib ./bin/splog -p jboss_log4j_common -f test/examples/jboss/multiline_match_server.log -c test/examples/jboss/.splog.yml -o json | prettyjson
|
124
|
+
|
125
|
+
#### Executing the spec tests in dev
|
126
|
+
|
127
|
+
bundle exec rspec test
|
128
|
+
|
129
|
+
#### A few performance measurements
|
130
|
+
|
131
|
+
Note that everything is done in a streaming manner with Ruby Enumerators. No file is ever read completely. At most a file is read two lines at a time. The memory requirements should be minimal due to this.
|
132
|
+
|
133
|
+
Parsing a 1m JBoss log to json:
|
134
|
+
|
135
|
+
time ruby -Ilib ./bin/splog -p jboss_log4j_common -f ./server.log -o json
|
136
|
+
2.99s user 0.04s system 88% cpu 3.437 total
|
137
|
+
|
138
|
+
Parsing a 1m JBoss log to with no writing to stdout:
|
139
|
+
|
140
|
+
time ruby -Ilib ./bin/splog -p jboss_log4j_common -f ./server.log -o
|
141
|
+
2.81s user 0.02s system 99% cpu 2.834 total
|
142
|
+
|
143
|
+
Parsing a 45m Apache access log:
|
144
|
+
|
145
|
+
time ruby -Ilib ./bin/splog -p apache_common -f ./access_log -o
|
146
|
+
44.49s user 0.10s system 99% cpu 44.596 total
|
147
|
+
|
148
|
+
## Dependencies
|
149
|
+
|
150
|
+
Splog is compatible with Ruby 1.9+
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/splog
ADDED
data/examples/.splog.yml
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
db_refs:
|
2
|
+
mongo:
|
3
|
+
type: 'mongo'
|
4
|
+
host: "127.0.0.1"
|
5
|
+
port: "27017"
|
6
|
+
user: ""
|
7
|
+
pass: ""
|
8
|
+
db: "splog"
|
9
|
+
collection: "logs"
|
10
|
+
|
11
|
+
# Data Types supported ['DateTime' 'Integer', 'Float', 'String']
|
12
|
+
apache_common:
|
13
|
+
db_key:
|
14
|
+
delim: '_'
|
15
|
+
# Define an array to create the compound key to define this log file
|
16
|
+
# This is most useful when combined saving the log to mongo
|
17
|
+
# You can specify any command line option here to be dereferenced
|
18
|
+
# In this case if I passed in -k prod -f access_log the key would be
|
19
|
+
# "prod_access_log"
|
20
|
+
values:
|
21
|
+
- '--key'
|
22
|
+
- '--file'
|
23
|
+
# If the filename is sufficiently complex like access_log_prod_1020PMEST
|
24
|
+
# I'd recommend something like below with -k prod_access_log to force the key
|
25
|
+
# to be easier to facilitate mongo searches
|
26
|
+
#values:
|
27
|
+
# - '--key'
|
28
|
+
|
29
|
+
# Delimeter to join the regex array lines. Apache access is space delimited
|
30
|
+
delim: '\s*'
|
31
|
+
# Regex to be joined to parse each log line
|
32
|
+
# ex. 127.0.0.1 - - [25/Sep/2013:15:35:27 -0400] "INFO / HTTP/1.0" 200 - "-" "ClusterListener/1.0"
|
33
|
+
regex:
|
34
|
+
- '(?<Host>\S+)' # host %h
|
35
|
+
- '(?<Identity>\S+)' # indent %l (unused)
|
36
|
+
- '(?<User>\S+)' # user %u
|
37
|
+
- '\[(?<Time>.+)\]' # time %t
|
38
|
+
- '"(?<Request>.+)"' # request "%r"
|
39
|
+
- '(?<Status>[0-9]+)' # status %>s
|
40
|
+
- '(?<Size>\S+)' # size %b (careful can be '-')
|
41
|
+
- '"(?<Referer>.*)"' # referer "%{Referer}i"
|
42
|
+
- '"(?<UserAgent>.*)"' # user agent "%{User-agent}i"
|
43
|
+
# Define which name in the hash to append contents to based on the regex group
|
44
|
+
#append_key_name: ''
|
45
|
+
# Any mappings not specified are assumed to be of type String
|
46
|
+
mapping:
|
47
|
+
- name: Time
|
48
|
+
data_type: DateTime
|
49
|
+
format: '%d/%b/%Y:%H:%M:%S %z'
|
50
|
+
- name: Status
|
51
|
+
data_type: Integer
|
52
|
+
- name: Size
|
53
|
+
data_type: Integer
|
54
|
+
|
55
|
+
# Data Types supported ['DateTime' 'Integer', 'Float', 'String']
|
56
|
+
jboss_log4j_common:
|
57
|
+
db_key:
|
58
|
+
delim: '_'
|
59
|
+
values:
|
60
|
+
- '--key'
|
61
|
+
- '--file'
|
62
|
+
# Delimeter to join the regex array lines. Apache access is space delimited
|
63
|
+
delim: '\s+'
|
64
|
+
# Regex to be joined to parse each log line
|
65
|
+
# <!-- The default pattern: Date Priority [Category] (Thread) Message\n -->
|
66
|
+
# <param name="ConversionPattern" value="%d %-5p [%c] (%t) %m%n"/>
|
67
|
+
# (?<Date>.*?)\s+(?<Priority>WARN|ERROR|INFO|TRACE|DEBUG)\s+\[(?<Category>.*?)\]\s+\((?<Thread>.*?)\)\s+(?<Message>.*)
|
68
|
+
regex:
|
69
|
+
- '(?<Date>.*?)'
|
70
|
+
- '(?<Priority>WARN|ERROR|INFO|TRACE|DEBUG)'
|
71
|
+
- '\[(?<Category>.*?)\]'
|
72
|
+
- '\((?<Thread>.*?)\)'
|
73
|
+
- '(?<Message>.*)'
|
74
|
+
# For lines that don't match the regex above, define a key name if you want the log line
|
75
|
+
# TO be appended to a previously matched line
|
76
|
+
unmatched_append_key_name: 'Message'
|
77
|
+
# Define a regex pattern to define any matched lines to append to the previously matched line
|
78
|
+
# Example: 03 Oct 2013 20:16:55,309 ERROR [stderr] (MSC service thread 1-3) at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:116)
|
79
|
+
match_forward_regex:
|
80
|
+
- '(?<Date>.*?)'
|
81
|
+
- '(?<Priority>WARN|ERROR|INFO|TRACE|DEBUG)'
|
82
|
+
- '\[(?<Category>.*?)\]'
|
83
|
+
- '\((?<Thread>.*?)\)'
|
84
|
+
- '(?<Message>\tat\s.*?)'
|
85
|
+
|
86
|
+
# Define the hash key to read from, otherwise default to the entire line
|
87
|
+
match_forward_keyname_source: 'Message'
|
88
|
+
|
89
|
+
# Define the hash key to read to, Mandatory if match_forward_regex defined
|
90
|
+
match_forward_keyname_dest: 'Message'
|
91
|
+
# Any mappings not specified are assumed to be of type String
|
92
|
+
#mapping:
|
93
|
+
# - name: Status
|
94
|
+
# data_type: Integer
|
95
|
+
# - name: Size
|
96
|
+
# data_type: Integer
|
data/examples/access_log
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
127.0.0.103 - - [03/Oct/2013:12:31:00 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
2
|
+
127.0.0.224 - - [03/Oct/2013:12:31:03 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
3
|
+
127.0.0.229 - - [03/Oct/2013:12:32:36 -0400] "STATUS / HTTP/1.0" 500 648 "-" "ClusterListener/1.0"
|
4
|
+
127.0.0.229 - - [03/Oct/2013:12:32:46 -0400] "INFO / HTTP/1.0" 200 3403 "-" "ClusterListener/1.0"
|
5
|
+
127.0.0.229 - - [03/Oct/2013:12:32:46 -0400] "CONFIG / HTTP/1.0" 200 - "-" "ClusterListener/1.0"
|
6
|
+
127.0.0.229 - - [03/Oct/2013:12:32:46 -0400] "ENABLE-APP / HTTP/1.0" 200 - "-" "ClusterListener/1.0"
|
7
|
+
127.0.0.228 - - [03/Oct/2013:12:33:23 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
8
|
+
127.0.0.120 - - [03/Oct/2013:12:33:30 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
9
|
+
127.0.0.226 - - [03/Oct/2013:12:33:59 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
10
|
+
127.0.0.126 - - [03/Oct/2013:12:34:00 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
11
|
+
127.0.0.224 - - [03/Oct/2013:12:34:26 -0400] "REMOVE-APP / HTTP/1.0" 200 - "-" "ClusterListener/1.0"
|
12
|
+
127.0.0.225 - - [03/Oct/2013:12:34:50 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
13
|
+
127.0.0.224 - - [03/Oct/2013:12:35:01 -0400] "INFO / HTTP/1.0" 200 3652 "-" "ClusterListener/1.0"
|
14
|
+
127.0.0.100 - - [03/Oct/2013:12:35:28 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
15
|
+
127.0.0.122 - - [03/Oct/2013:12:35:40 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
16
|
+
127.0.0.102 - - [03/Oct/2013:12:36:49 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
17
|
+
127.0.0.103 - - [03/Oct/2013:12:37:28 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
18
|
+
127.0.0.229 - - [03/Oct/2013:12:39:04 -0400] "STATUS / HTTP/1.0" 500 648 "-" "ClusterListener/1.0"
|
19
|
+
127.0.0.229 - - [03/Oct/2013:12:39:14 -0400] "INFO / HTTP/1.0" 200 3317 "-" "ClusterListener/1.0"
|
20
|
+
127.0.0.229 - - [03/Oct/2013:12:39:14 -0400] "CONFIG / HTTP/1.0" 200 - "-" "ClusterListener/1.0"
|
21
|
+
127.0.0.229 - - [03/Oct/2013:12:39:14 -0400] "ENABLE-APP / HTTP/1.0" 200 - "-" "ClusterListener/1.0"
|
22
|
+
127.0.0.1 - - [03/Oct/2013:12:39:39 -0400] "GET /x/ HTTP/1.1" 503 435 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.3; MS-RTC LM 8;)"
|
23
|
+
127.0.0.1 - - [03/Oct/2013:12:39:49 -0400] "GET /x/ HTTP/1.1" 503 435 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.3; MS-RTC LM 8;)"
|
24
|
+
127.0.0.228 - - [03/Oct/2013:12:39:51 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
25
|
+
127.0.0.120 - - [03/Oct/2013:12:39:58 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
26
|
+
127.0.0.226 - - [03/Oct/2013:12:40:27 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
27
|
+
127.0.0.126 - - [03/Oct/2013:12:40:28 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
28
|
+
127.0.0.225 - - [03/Oct/2013:12:41:18 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
29
|
+
127.0.0.224 - - [03/Oct/2013:12:41:19 -0400] "CONFIG / HTTP/1.0" 200 - "-" "ClusterListener/1.0"
|
30
|
+
127.0.0.224 - - [03/Oct/2013:12:41:19 -0400] "ENABLE-APP / HTTP/1.0" 200 - "-" "ClusterListener/1.0"
|
31
|
+
127.0.0.100 - - [03/Oct/2013:12:41:56 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
32
|
+
127.0.0.122 - - [03/Oct/2013:12:42:08 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
33
|
+
127.0.0.224 - - [03/Oct/2013:12:42:42 -0400] "REMOVE-APP / HTTP/1.0" 200 - "-" "ClusterListener/1.0"
|
34
|
+
127.0.0.102 - - [03/Oct/2013:12:43:17 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
35
|
+
127.0.0.224 - - [03/Oct/2013:12:43:23 -0400] "INFO / HTTP/1.0" 200 3652 "-" "ClusterListener/1.0"
|
36
|
+
127.0.0.103 - - [03/Oct/2013:12:43:56 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
37
|
+
127.0.0.229 - - [03/Oct/2013:12:45:32 -0400] "STATUS / HTTP/1.0" 500 648 "-" "ClusterListener/1.0"
|
38
|
+
127.0.0.229 - - [03/Oct/2013:12:45:42 -0400] "INFO / HTTP/1.0" 200 3317 "-" "ClusterListener/1.0"
|
39
|
+
127.0.0.229 - - [03/Oct/2013:12:45:42 -0400] "CONFIG / HTTP/1.0" 200 - "-" "ClusterListener/1.0"
|
40
|
+
127.0.0.229 - - [03/Oct/2013:12:45:42 -0400] "ENABLE-APP / HTTP/1.0" 200 - "-" "ClusterListener/1.0"
|
41
|
+
127.0.0.228 - - [03/Oct/2013:12:46:19 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
42
|
+
127.0.0.120 - - [03/Oct/2013:12:46:26 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
43
|
+
127.0.0.226 - - [03/Oct/2013:12:46:55 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
44
|
+
127.0.0.126 - - [03/Oct/2013:12:46:56 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
45
|
+
127.0.0.225 - - [03/Oct/2013:12:47:46 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
46
|
+
127.0.0.100 - - [03/Oct/2013:12:48:24 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
47
|
+
127.0.0.122 - - [03/Oct/2013:12:48:36 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|
48
|
+
127.0.0.224 - - [03/Oct/2013:12:49:41 -0400] "CONFIG / HTTP/1.0" 200 - "-" "ClusterListener/1.0"
|
49
|
+
127.0.0.224 - - [03/Oct/2013:12:49:41 -0400] "ENABLE-APP / HTTP/1.0" 200 - "-" "ClusterListener/1.0"
|
50
|
+
127.0.0.102 - - [03/Oct/2013:12:49:45 -0400] "STATUS / HTTP/1.0" 200 86 "-" "ClusterListener/1.0"
|