logstash-core 5.0.0.alpha6.snapshot1-java → 5.0.0.alpha6.snapshot2-java
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of logstash-core might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/lib/jars.rb +7 -0
- data/lib/logstash-core/version.rb +1 -1
- data/lib/logstash/agent.rb +2 -2
- data/lib/logstash/api/rack_app.rb +14 -15
- data/lib/logstash/config/config_ast.rb +2 -2
- data/lib/logstash/config/file.rb +1 -2
- data/lib/logstash/config/mixin.rb +9 -11
- data/lib/logstash/environment.rb +2 -1
- data/lib/logstash/filters/base.rb +1 -0
- data/lib/logstash/inputs/base.rb +1 -0
- data/lib/logstash/java_integration.rb +1 -0
- data/lib/logstash/logging.rb +1 -89
- data/lib/logstash/logging/json.rb +1 -1
- data/lib/logstash/logging/logger.rb +72 -0
- data/lib/logstash/output_delegator.rb +8 -16
- data/lib/logstash/output_delegator_strategies/legacy.rb +2 -1
- data/lib/logstash/output_delegator_strategies/shared.rb +1 -0
- data/lib/logstash/output_delegator_strategies/single.rb +1 -0
- data/lib/logstash/outputs/base.rb +5 -0
- data/lib/logstash/patches/clamp.rb +21 -0
- data/lib/logstash/pipeline.rb +24 -24
- data/lib/logstash/pipeline_reporter.rb +1 -1
- data/lib/logstash/plugin.rb +3 -10
- data/lib/logstash/plugins/registry.rb +3 -1
- data/lib/logstash/runner.rb +47 -74
- data/lib/logstash/shutdown_watcher.rb +1 -8
- data/lib/logstash/util/decorators.rb +3 -4
- data/lib/logstash/util/java_version.rb +0 -5
- data/lib/logstash/util/loggable.rb +7 -17
- data/lib/logstash/util/safe_uri.rb +2 -0
- data/lib/logstash/util/wrapped_synchronous_queue.rb +5 -5
- data/lib/logstash/version.rb +1 -1
- data/locales/en.yml +19 -8
- data/logstash-core.gemspec +4 -3
- data/spec/api/lib/rack_app_spec.rb +6 -4
- data/spec/logstash/config/loader_spec.rb +3 -1
- data/spec/logstash/config/mixin_spec.rb +28 -9
- data/spec/logstash/output_delegator_spec.rb +15 -2
- data/spec/logstash/outputs/base_spec.rb +0 -1
- data/spec/logstash/pipeline_reporter_spec.rb +1 -0
- data/spec/logstash/pipeline_spec.rb +14 -2
- data/spec/logstash/plugin_spec.rb +7 -6
- data/spec/logstash/runner_spec.rb +62 -44
- data/spec/logstash/shutdown_watcher_spec.rb +0 -4
- metadata +21 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64e38afe34f986adc6451f62d9adb961977eb5d3
|
4
|
+
data.tar.gz: a78880a388cbae77c13de3a11bfd8789dad96898
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1bac0882c5f848de4d0c7c3d9c115efabd49ad102d37cf652b294927c66c540ce37361ba8ef259e9080d93d6728f63781b266ebd9482552a9a6f5984fbdc8bb4
|
7
|
+
data.tar.gz: f1d4e71fefb6775e6a09523fc2ca0f1ead2e294c2c7eed06c748bd06360eacd2518ff459c422138d7c372fe8b42e9e5d52b148aefa0443aa6a231be925a7686f
|
data/lib/jars.rb
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
require 'jar_dependencies'
|
2
|
+
require_jar('org.apache.logging.log4j', 'log4j-1.2-api', '2.6.2')
|
3
|
+
require_jar('org.apache.logging.log4j', 'log4j-api', '2.6.2')
|
4
|
+
require_jar('org.apache.logging.log4j', 'log4j-core', '2.6.2')
|
5
|
+
require_jar('com.fasterxml.jackson.core', 'jackson-core', '2.7.4')
|
6
|
+
require_jar('com.fasterxml.jackson.core', 'jackson-databind', '2.7.4')
|
7
|
+
require_jar('org.logstash', 'logstash-core', '5.0.0-alpha6')
|
data/lib/logstash/agent.rb
CHANGED
@@ -18,6 +18,7 @@ require "securerandom"
|
|
18
18
|
LogStash::Environment.load_locale!
|
19
19
|
|
20
20
|
class LogStash::Agent
|
21
|
+
include LogStash::Util::Loggable
|
21
22
|
STARTED_AT = Time.now.freeze
|
22
23
|
|
23
24
|
attr_reader :metric, :node_name, :pipelines, :settings, :webserver
|
@@ -28,10 +29,9 @@ class LogStash::Agent
|
|
28
29
|
# :node_name [String] - identifier for the agent
|
29
30
|
# :auto_reload [Boolean] - enable reloading of pipelines
|
30
31
|
# :reload_interval [Integer] - reload pipelines every X seconds
|
31
|
-
# :logger [Cabin::Channel] - logger instance
|
32
32
|
def initialize(settings = LogStash::SETTINGS)
|
33
|
+
@logger = self.class.logger
|
33
34
|
@settings = settings
|
34
|
-
@logger = Cabin::Channel.get(LogStash)
|
35
35
|
@auto_reload = setting("config.reload.automatic")
|
36
36
|
|
37
37
|
@pipelines = {}
|
@@ -10,18 +10,17 @@ require "logstash/api/modules/stats"
|
|
10
10
|
module LogStash
|
11
11
|
module Api
|
12
12
|
module RackApp
|
13
|
-
# Cabin is not compatible with CommonLogger, and this gives us more control anyway
|
14
13
|
METADATA_FIELDS = [:request_method, :path_info, :query_string, :http_version, :http_accept].freeze
|
15
14
|
def self.log_metadata(status, env)
|
16
15
|
METADATA_FIELDS.reduce({:status => status}) do |acc, field|
|
17
16
|
acc[field] = env[field.to_s.upcase]
|
18
17
|
acc
|
19
|
-
end
|
18
|
+
end
|
20
19
|
end
|
21
|
-
|
20
|
+
|
22
21
|
class ApiLogger
|
23
22
|
LOG_MESSAGE = "API HTTP Request".freeze
|
24
|
-
|
23
|
+
|
25
24
|
def initialize(app, logger)
|
26
25
|
@app = app
|
27
26
|
@logger = logger
|
@@ -30,24 +29,24 @@ module LogStash
|
|
30
29
|
def call(env)
|
31
30
|
res = @app.call(env)
|
32
31
|
status, headers, body = res
|
33
|
-
|
32
|
+
|
34
33
|
if fatal_error?(status)
|
35
|
-
@logger.warn? && @logger.warn(LOG_MESSAGE, RackApp.log_metadata(status, env))
|
36
|
-
else
|
37
|
-
@logger.info? && @logger.info(LOG_MESSAGE, RackApp.log_metadata(status, env))
|
34
|
+
@logger.warn? && @logger.warn(LOG_MESSAGE, RackApp.log_metadata(status, env))
|
35
|
+
else
|
36
|
+
@logger.info? && @logger.info(LOG_MESSAGE, RackApp.log_metadata(status, env))
|
38
37
|
end
|
39
38
|
|
40
|
-
res
|
39
|
+
res
|
41
40
|
end
|
42
41
|
|
43
42
|
def fatal_error?(status)
|
44
43
|
status >= 500 && status < 600
|
45
44
|
end
|
46
45
|
end
|
47
|
-
|
46
|
+
|
48
47
|
class ApiErrorHandler
|
49
48
|
LOG_MESSAGE = "Internal API server error".freeze
|
50
|
-
|
49
|
+
|
51
50
|
def initialize(app, logger)
|
52
51
|
@app = app
|
53
52
|
@logger = logger
|
@@ -65,21 +64,21 @@ module LogStash
|
|
65
64
|
})
|
66
65
|
|
67
66
|
@logger.error(LOG_MESSAGE, body)
|
68
|
-
|
67
|
+
|
69
68
|
[500,
|
70
69
|
{'Content-Type' => 'application/json'},
|
71
70
|
[LogStash::Json.dump(body)]
|
72
71
|
]
|
73
72
|
end
|
74
73
|
end
|
75
|
-
|
74
|
+
|
76
75
|
def self.app(logger, agent, environment)
|
77
76
|
namespaces = rack_namespaces(agent)
|
78
77
|
|
79
78
|
Rack::Builder.new do
|
80
79
|
# Custom logger object. Rack CommonLogger does not work with cabin
|
81
80
|
use ApiLogger, logger
|
82
|
-
|
81
|
+
|
83
82
|
# In test env we want errors to propogate up the chain
|
84
83
|
# so we get easy to understand test failures.
|
85
84
|
# In production / dev we don't want a bad API endpoint
|
@@ -87,7 +86,7 @@ module LogStash
|
|
87
86
|
if environment != "test"
|
88
87
|
use ApiErrorHandler, logger
|
89
88
|
end
|
90
|
-
|
89
|
+
|
91
90
|
run LogStash::Api::Modules::Root.new(nil, agent)
|
92
91
|
namespaces.each_pair do |namespace, app|
|
93
92
|
map(namespace) do
|
@@ -123,7 +123,7 @@ module LogStash; module Config; module AST
|
|
123
123
|
definitions << "define_singleton_method :#{type}_func do |event|"
|
124
124
|
definitions << " targeted_outputs = []" if type == "output"
|
125
125
|
definitions << " events = [event]" if type == "filter"
|
126
|
-
definitions << " @logger.debug? && @logger.debug(\"#{type} received\",
|
126
|
+
definitions << " @logger.debug? && @logger.debug(\"#{type} received\", \"event\" => event.to_hash)"
|
127
127
|
|
128
128
|
sections.select { |s| s.plugin_type.text_value == type }.each do |s|
|
129
129
|
definitions << s.compile.split("\n", -1).map { |e| " #{e}" }
|
@@ -174,7 +174,7 @@ module LogStash; module Config; module AST
|
|
174
174
|
|
175
175
|
return if events.nil? || events.empty?
|
176
176
|
|
177
|
-
@logger.debug? && @logger.debug(\"Flushing\", :plugin => @generated_objects[:#{name}], :events => events)
|
177
|
+
@logger.debug? && @logger.debug(\"Flushing\", :plugin => @generated_objects[:#{name}], :events => events.map { |x| x.to_hash })
|
178
178
|
|
179
179
|
#{plugin.compile_starting_here.gsub(/^/, " ")}
|
180
180
|
|
data/lib/logstash/config/file.rb
CHANGED
@@ -8,11 +8,10 @@ require "logger"
|
|
8
8
|
|
9
9
|
class LogStash::Config::File
|
10
10
|
include Enumerable
|
11
|
-
|
11
|
+
include LogStash::Util::Loggable
|
12
12
|
|
13
13
|
public
|
14
14
|
def initialize(text)
|
15
|
-
@logger = Cabin::Channel.get(LogStash)
|
16
15
|
@text = text
|
17
16
|
@config = parse(text)
|
18
17
|
end # def initialize
|
@@ -66,7 +66,7 @@ module LogStash::Config::Mixin
|
|
66
66
|
if opts && opts[:deprecated]
|
67
67
|
extra = opts[:deprecated].is_a?(String) ? opts[:deprecated] : ""
|
68
68
|
extra.gsub!("%PLUGIN%", self.class.config_name)
|
69
|
-
|
69
|
+
self.logger.warn("You are using a deprecated config setting " +
|
70
70
|
"#{name.inspect} set in #{self.class.config_name}. " +
|
71
71
|
"Deprecated settings will continue to work, " +
|
72
72
|
"but are scheduled for removal from logstash " +
|
@@ -141,7 +141,7 @@ module LogStash::Config::Mixin
|
|
141
141
|
next if key[0, 1] == "@"
|
142
142
|
|
143
143
|
# Set this key as an instance variable only if it doesn't start with an '@'
|
144
|
-
|
144
|
+
self.logger.debug("config #{self.class.name}/@#{key} = #{value.inspect}")
|
145
145
|
instance_variable_set("@#{key}", value)
|
146
146
|
end
|
147
147
|
|
@@ -198,8 +198,7 @@ module LogStash::Config::Mixin
|
|
198
198
|
# Deprecated: Declare the version of the plugin
|
199
199
|
# inside the gemspec.
|
200
200
|
def milestone(m = nil)
|
201
|
-
|
202
|
-
@logger.debug(I18n.t('logstash.plugin.deprecated_milestone', :plugin => config_name))
|
201
|
+
self.logger.debug(I18n.t('logstash.plugin.deprecated_milestone', :plugin => config_name))
|
203
202
|
end
|
204
203
|
|
205
204
|
# Define a new configuration setting
|
@@ -262,7 +261,6 @@ module LogStash::Config::Mixin
|
|
262
261
|
def validate(params)
|
263
262
|
@plugin_name = config_name
|
264
263
|
@plugin_type = ancestors.find { |a| a.name =~ /::Base$/ }.config_name
|
265
|
-
@logger = Cabin::Channel.get(LogStash)
|
266
264
|
is_valid = true
|
267
265
|
|
268
266
|
print_version_notice
|
@@ -282,12 +280,12 @@ module LogStash::Config::Mixin
|
|
282
280
|
|
283
281
|
if plugin_version < PLUGIN_VERSION_1_0_0
|
284
282
|
if plugin_version < PLUGIN_VERSION_0_9_0
|
285
|
-
|
283
|
+
self.logger.info(I18n.t("logstash.plugin.version.0-1-x",
|
286
284
|
:type => @plugin_type,
|
287
285
|
:name => @config_name,
|
288
286
|
:LOGSTASH_VERSION => LOGSTASH_VERSION))
|
289
287
|
else
|
290
|
-
|
288
|
+
self.logger.info(I18n.t("logstash.plugin.version.0-9-x",
|
291
289
|
:type => @plugin_type,
|
292
290
|
:name => @config_name,
|
293
291
|
:LOGSTASH_VERSION => LOGSTASH_VERSION))
|
@@ -297,7 +295,7 @@ module LogStash::Config::Mixin
|
|
297
295
|
# If we cannot find a version in the currently installed gems we
|
298
296
|
# will display this message. This could happen in the test, if you
|
299
297
|
# create an anonymous class to test a plugin.
|
300
|
-
|
298
|
+
self.logger.warn(I18n.t("logstash.plugin.no_version",
|
301
299
|
:type => @plugin_type,
|
302
300
|
:name => @config_name,
|
303
301
|
:LOGSTASH_VERSION => LOGSTASH_VERSION))
|
@@ -321,7 +319,7 @@ module LogStash::Config::Mixin
|
|
321
319
|
|
322
320
|
if invalid_params.size > 0
|
323
321
|
invalid_params.each do |name|
|
324
|
-
|
322
|
+
self.logger.error("Unknown setting '#{name}' for #{@plugin_name}")
|
325
323
|
end
|
326
324
|
return false
|
327
325
|
end # if invalid_params.size > 0
|
@@ -348,7 +346,7 @@ module LogStash::Config::Mixin
|
|
348
346
|
|
349
347
|
value = params[config_key]
|
350
348
|
if value.nil? || (config[:list] && Array(value).empty?)
|
351
|
-
|
349
|
+
self.logger.error(I18n.t("logstash.runner.configuration.setting_missing",
|
352
350
|
:setting => config_key, :plugin => @plugin_name,
|
353
351
|
:type => @plugin_type))
|
354
352
|
is_valid = false
|
@@ -396,7 +394,7 @@ module LogStash::Config::Mixin
|
|
396
394
|
# Used for converting values in the config to proper objects.
|
397
395
|
params[key] = processed_value
|
398
396
|
else
|
399
|
-
|
397
|
+
self.logger.error(I18n.t("logstash.runner.configuration.setting_invalid",
|
400
398
|
:plugin => @plugin_name, :type => @plugin_type,
|
401
399
|
:setting => key, :value => value.inspect,
|
402
400
|
:value_type => config_settings[:validate],
|
data/lib/logstash/environment.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require "logstash/errors"
|
3
|
+
require "logstash/java_integration"
|
3
4
|
require "logstash/config/cpu_core_strategy"
|
4
5
|
require "logstash/settings"
|
5
6
|
require "socket"
|
@@ -32,7 +33,7 @@ module LogStash
|
|
32
33
|
Setting.new("path.plugins", Array, []),
|
33
34
|
Setting::String.new("interactive", nil, false),
|
34
35
|
Setting::Boolean.new("config.debug", false),
|
35
|
-
Setting::String.new("log.level", "warn", true, ["
|
36
|
+
Setting::String.new("log.level", "warn", true, ["fatal", "error", "warn", "debug", "info", "trace"]),
|
36
37
|
Setting::Boolean.new("version", false),
|
37
38
|
Setting::Boolean.new("help", false),
|
38
39
|
Setting::String.new("path.log", nil, false),
|
data/lib/logstash/inputs/base.rb
CHANGED
data/lib/logstash/logging.rb
CHANGED
@@ -1,91 +1,3 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
require "logstash/logging/logger"
|
2
3
|
require "logstash/namespace"
|
3
|
-
require "cabin"
|
4
|
-
require "logger"
|
5
|
-
|
6
|
-
class LogStash::Logger
|
7
|
-
attr_accessor :target
|
8
|
-
|
9
|
-
public
|
10
|
-
def initialize(*args)
|
11
|
-
super()
|
12
|
-
|
13
|
-
#self[:program] = File.basename($0)
|
14
|
-
#subscribe(::Logger.new(*args))
|
15
|
-
@target = args[0]
|
16
|
-
@channel = Cabin::Channel.get(LogStash)
|
17
|
-
|
18
|
-
# lame hack until cabin's smart enough not to doubley-subscribe something.
|
19
|
-
# without this subscription count check, running the test suite
|
20
|
-
# causes Cabin to subscribe to STDOUT maaaaaany times.
|
21
|
-
subscriptions = @channel.instance_eval { @subscribers.count }
|
22
|
-
@channel.subscribe(@target) unless subscriptions > 0
|
23
|
-
|
24
|
-
# Set default loglevel to WARN unless $DEBUG is set (run with 'ruby -d')
|
25
|
-
@level = $DEBUG ? :debug : :warn
|
26
|
-
if ENV["LOGSTASH_DEBUG"]
|
27
|
-
@level = :debug
|
28
|
-
end
|
29
|
-
|
30
|
-
# Direct metrics elsewhere.
|
31
|
-
@channel.metrics.channel = Cabin::Channel.new
|
32
|
-
end # def initialize
|
33
|
-
|
34
|
-
# Delegation
|
35
|
-
def level=(value) @channel.level = value; end
|
36
|
-
def debug(*args); @channel.debug(*args); end
|
37
|
-
def debug?(*args); @channel.debug?(*args); end
|
38
|
-
def info(*args); @channel.info(*args); end
|
39
|
-
def info?(*args); @channel.info?(*args); end
|
40
|
-
def warn(*args); @channel.warn(*args); end
|
41
|
-
def warn?(*args); @channel.warn?(*args); end
|
42
|
-
def error(*args); @channel.error(*args); end
|
43
|
-
def error?(*args); @channel.error?(*args); end
|
44
|
-
def fatal(*args); @channel.fatal(*args); end
|
45
|
-
def fatal?(*args); @channel.fatal?(*args); end
|
46
|
-
|
47
|
-
def self.setup_log4j(logger)
|
48
|
-
require "java"
|
49
|
-
|
50
|
-
properties = java.util.Properties.new
|
51
|
-
log4j_level = "WARN"
|
52
|
-
case logger.level
|
53
|
-
when :debug
|
54
|
-
log4j_level = "DEBUG"
|
55
|
-
when :info
|
56
|
-
log4j_level = "INFO"
|
57
|
-
when :warn
|
58
|
-
log4j_level = "WARN"
|
59
|
-
end # case level
|
60
|
-
properties.setProperty("log4j.rootLogger", "#{log4j_level},logstash")
|
61
|
-
|
62
|
-
# TODO(sissel): This is a shitty hack to work around the fact that
|
63
|
-
# LogStash::Logger isn't used anymore. We should fix that.
|
64
|
-
target = logger.instance_eval { @subscribers }.values.first.instance_eval { @io }
|
65
|
-
case target
|
66
|
-
when STDOUT
|
67
|
-
properties.setProperty("log4j.appender.logstash",
|
68
|
-
"org.apache.log4j.ConsoleAppender")
|
69
|
-
properties.setProperty("log4j.appender.logstash.Target", "System.out")
|
70
|
-
when STDERR
|
71
|
-
properties.setProperty("log4j.appender.logstash",
|
72
|
-
"org.apache.log4j.ConsoleAppender")
|
73
|
-
properties.setProperty("log4j.appender.logstash.Target", "System.err")
|
74
|
-
when target.is_a?(File)
|
75
|
-
properties.setProperty("log4j.appender.logstash",
|
76
|
-
"org.apache.log4j.FileAppender")
|
77
|
-
properties.setProperty("log4j.appender.logstash.File", target.path)
|
78
|
-
else
|
79
|
-
properties.setProperty("log4j.appender.logstash", "org.apache.log4j.varia.NullAppender")
|
80
|
-
end # case target
|
81
|
-
|
82
|
-
properties.setProperty("log4j.appender.logstash.layout",
|
83
|
-
"org.apache.log4j.PatternLayout")
|
84
|
-
properties.setProperty("log4j.appender.logstash.layout.conversionPattern",
|
85
|
-
"log4j, [%d{yyyy-MM-dd}T%d{HH:mm:ss.SSS}] %5p: %c: %m%n")
|
86
|
-
|
87
|
-
org.apache.log4j.LogManager.resetConfiguration
|
88
|
-
org.apache.log4j.PropertyConfigurator.configure(properties)
|
89
|
-
logger.debug("log4j java properties setup", :log4j_level => log4j_level)
|
90
|
-
end
|
91
|
-
end # class LogStash::Logger
|
@@ -3,7 +3,7 @@ require "logstash/namespace"
|
|
3
3
|
require "logstash/logging"
|
4
4
|
require "logstash/json"
|
5
5
|
|
6
|
-
module LogStash;
|
6
|
+
module LogStash; module Logging; class JSON
|
7
7
|
def initialize(io)
|
8
8
|
raise ArgumentError, "Expected IO, got #{io.class.name}" unless io.is_a?(IO)
|
9
9
|
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require "logstash/java_integration"
|
2
|
+
|
3
|
+
module LogStash
|
4
|
+
module Logging
|
5
|
+
class Logger
|
6
|
+
java_import org.apache.logging.log4j.Level
|
7
|
+
java_import org.apache.logging.log4j.LogManager
|
8
|
+
java_import org.apache.logging.log4j.core.config.Configurator
|
9
|
+
|
10
|
+
def initialize(name)
|
11
|
+
@logger = LogManager.getLogger(name)
|
12
|
+
end
|
13
|
+
|
14
|
+
def debug?
|
15
|
+
@logger.is_debug_enabled
|
16
|
+
end
|
17
|
+
|
18
|
+
def info?
|
19
|
+
@logger.is_info_enabled
|
20
|
+
end
|
21
|
+
|
22
|
+
def error?
|
23
|
+
@logger.is_error_enabled
|
24
|
+
end
|
25
|
+
|
26
|
+
def warn?
|
27
|
+
@logger.is_warn_enabled
|
28
|
+
end
|
29
|
+
|
30
|
+
def fatal?
|
31
|
+
@logger.is_fatal_enabled
|
32
|
+
end
|
33
|
+
|
34
|
+
def trace?
|
35
|
+
@logger.is_trace_enabled
|
36
|
+
end
|
37
|
+
|
38
|
+
def debug(message, data = {})
|
39
|
+
@logger.debug(message, data)
|
40
|
+
end
|
41
|
+
|
42
|
+
def warn(message, data = {})
|
43
|
+
@logger.warn(message, data)
|
44
|
+
end
|
45
|
+
|
46
|
+
def info(message, data = {})
|
47
|
+
@logger.info(message, data)
|
48
|
+
end
|
49
|
+
|
50
|
+
def error(message, data = {})
|
51
|
+
@logger.error(message, data)
|
52
|
+
end
|
53
|
+
|
54
|
+
def fatal(message, data = {})
|
55
|
+
@logger.fatal(message, data)
|
56
|
+
end
|
57
|
+
|
58
|
+
def trace(message, data = {})
|
59
|
+
@logger.trace(message, data)
|
60
|
+
end
|
61
|
+
|
62
|
+
# Point logging at a specific path.
|
63
|
+
def self.configure_logging(level, path = LogManager::ROOT_LOGGER_NAME)
|
64
|
+
Configurator.setLevel(path, Level.toLevel(level))
|
65
|
+
end # def configure_logging
|
66
|
+
|
67
|
+
def self.initialize(config_location)
|
68
|
+
Configurator.initialize(nil, config_location)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|