summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Wrock <matt@mattwrock.com>2015-11-06 17:21:06 -0800
committerMatt Wrock <matt@mattwrock.com>2015-11-06 17:21:06 -0800
commit43b0011220907da903ef10947a6914d8b574d080 (patch)
treefe894ff7656f1cbed1b71ffa972a5991c92b879b
parentd70014cbcbb99558437587cf03f7b1ec3939df81 (diff)
downloadchef-logging_redux.tar.gz
fix log location resolution in windows servicelogging_redux
-rw-r--r--lib/chef/application/windows_service.rb14
-rw-r--r--spec/unit/windows_service_spec.rb5
2 files changed, 10 insertions, 9 deletions
diff --git a/lib/chef/application/windows_service.rb b/lib/chef/application/windows_service.rb
index 932f7e9c36..2f938059ca 100644
--- a/lib/chef/application/windows_service.rb
+++ b/lib/chef/application/windows_service.rb
@@ -188,7 +188,11 @@ class Chef
# Pass config params to the new process
config_params = " --no-fork"
config_params += " -c #{Chef::Config[:config_file]}" unless Chef::Config[:config_file].nil?
- config_params += " -L #{resolve_log_location}" unless Chef::Config[:log_location] == STDOUT
+ # log_location might be an event logger and if so we cannot pass as a command argument
+ # but shed no tears! If the logger is an event logger, it must have been configured
+ # as such in the config file and chef-client will use that when no arg is passed here
+ config_params += " -L #{resolve_log_location}" if resolve_log_location.is_a?(String)
+
# Starts a new process and waits till the process exits
result = shell_out(
@@ -266,13 +270,9 @@ class Chef
Chef::Config[:log_level] == :auto
end
- # Check if we have a log location and it's not STDOUT
def resolve_log_location
- if Chef::Config[:log_location] && Chef::Config[:log_location].is_a?(String)
- Chef::Config[:log_location]
- else
- DEFAULT_LOG_LOCATION
- end
+ # STDOUT is the default log location, but makes no sense for a windows service
+ Chef::Config[:log_location] == STDOUT ? DEFAULT_LOG_LOCATION : Chef::Config[:log_location]
end
# if log_level is `:auto`, convert it to :warn (when using output formatter)
diff --git a/spec/unit/windows_service_spec.rb b/spec/unit/windows_service_spec.rb
index d4f2da9892..9ed6d37263 100644
--- a/spec/unit/windows_service_spec.rb
+++ b/spec/unit/windows_service_spec.rb
@@ -24,6 +24,7 @@ describe "Chef::Application::WindowsService", :windows_only do
let(:shell_out_result) { double('shellout', stdout: nil, stderr: nil) }
let(:config_options) do
{
+ log_location: STDOUT,
config_file: "test_config_file",
log_level: :info
}
@@ -78,10 +79,10 @@ describe "Chef::Application::WindowsService", :windows_only do
subject.service_main
end
- context 'configured to STDOUT' do
+ context 'configured to Event Logger' do
let(:config_options) do
{
- log_location: STDOUT,
+ log_location: Chef::Log::WinEvt.new,
config_file: "test_config_file",
log_level: :info
}