Skip to content

Commit b5e58ab

Browse files
author
Konstantin Yarovoy
committed
logging: Add possibility to log into file
Add processing of environment variables LOGPATH and LOG_PATH If either one exists - logger will log into the file on that path instead of STDOUT. refs: #2000 Signed-off-by: Konstantin Yarovoy <[email protected]>
1 parent f812650 commit b5e58ab

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

spec/utils/utils_spec.cr

+12
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,18 @@ describe "Utils" do
268268
CNFManager.sample_cleanup(config_file: "sample-cnfs/sample-coredns-cnf", verbose: true)
269269
end
270270

271+
it "'logger' should write logs to the file when LOG_PATH is set", tags: ["logger"] do
272+
response_s = `LOG_PATH=spec-test-testsuite.log ./cnf-testsuite test`
273+
$?.success?.should be_true
274+
(/ERROR -- cnf-testsuite: error test/ =~ response_s).should be_nil
275+
File.exists?("spec-test-testsuite.log").should be_true
276+
(/ERROR -- cnf-testsuite: error test/ =~ File.read("spec-test-testsuite.log")).should_not be_nil
277+
ensure
278+
if File.exists?("spec-test-testsuite.log")
279+
File.delete("spec-test-testsuite.log")
280+
end
281+
end
282+
271283
it "'#update_yml' should update the value for a key in a yml file", tags: ["logger"] do
272284
begin
273285
update_yml("spec/fixtures/cnf-testsuite.yml", "release_name", "coredns --set worker-node='kind-control-plane'")

src/tasks/utils/utils.cr

+17-2
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,24 @@ end
7979

8080
# this first line necessary to make sure our custom formatter
8181
# is used in the default error log line also
82-
Log.setup(Log::Severity::Error, Log::IOBackend.new(formatter: log_formatter))
83-
Log.setup(loglevel, Log::IOBackend.new(formatter: log_formatter))
82+
Log.setup(Log::Severity::Error, log_backend)
83+
Log.setup(loglevel, log_backend)
8484

85+
def log_backend
86+
if ENV.has_key?("LOGPATH") || ENV.has_key?("LOG_PATH")
87+
log_file = ENV.has_key?("LOGPATH") ? ENV["LOGPATH"] : ENV["LOG_PATH"]
88+
else
89+
log_file = ""
90+
end
91+
92+
if log_file.empty?
93+
backend = Log::IOBackend.new(formatter: log_formatter)
94+
else
95+
log_io = File.open(log_file, "a")
96+
backend = Log::IOBackend.new(io: log_io, formatter: log_formatter)
97+
end
98+
backend
99+
end
85100

86101
def loglevel
87102
levelstr = "" # default to unset

0 commit comments

Comments
 (0)