Skip to content

Commit 818cd72

Browse files
committed
Create helper for easy logger creation
1 parent 9daf923 commit 818cd72

File tree

3 files changed

+34
-23
lines changed

3 files changed

+34
-23
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,8 @@ require 'concurrent/actor' # Concurrent::Actor and supporting code
156156
require 'concurrent/channel ' # Concurrent::Channel and supporting code
157157
```
158158

159+
If the library does not behave as expected, `Concurrent.use_stdlib_logger(Logger::DEBUG)` could help to revel the problem.
160+
159161
## Installation
160162

161163
```shell

lib/concurrent/configuration.rb

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,37 @@ def self.global_logger=(value)
4242
GLOBAL_LOGGER.value = value
4343
end
4444

45+
# @return [Logger] Logger with provided level and output.
46+
def self.create_stdlib_logger(level = Logger::FATAL, output = $stderr)
47+
logger = Logger.new(output)
48+
logger.level = level
49+
logger.formatter = lambda do |severity, datetime, progname, msg|
50+
formatted_message = case msg
51+
when String
52+
msg
53+
when Exception
54+
format "%s (%s)\n%s",
55+
msg.message, msg.class, (msg.backtrace || []).join("\n")
56+
else
57+
msg.inspect
58+
end
59+
format "[%s] %5s -- %s: %s\n",
60+
datetime.strftime('%Y-%m-%d %H:%M:%S.%L'),
61+
severity,
62+
progname,
63+
formatted_message
64+
end
65+
logger
66+
end
67+
68+
# Use logger created by #create_stdlib_logger to log concurrent-ruby messages.
69+
def self.use_stdlib_logger(level = Logger::FATAL, output = $stderr)
70+
logger = create_stdlib_logger level, output
71+
Concurrent.global_logger = lambda do |level, progname, message = nil, &block|
72+
logger.add level, message, progname, &block
73+
end
74+
end
75+
4576
# Disables AtExit hooks including pool auto-termination hooks.
4677
# When disabled it will be the application
4778
# programmer's responsibility to ensure that the hooks

spec/spec_helper.rb

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,7 @@
22
require 'concurrent'
33
require 'concurrent-edge'
44

5-
logger = Logger.new($stderr)
6-
logger.level = Logger::FATAL
7-
8-
logger.formatter = lambda do |severity, datetime, progname, msg|
9-
formatted_message = case msg
10-
when String
11-
msg
12-
when Exception
13-
format "%s (%s)\n%s",
14-
msg.message, msg.class, (msg.backtrace || []).join("\n")
15-
else
16-
msg.inspect
17-
end
18-
format "[%s] %5s -- %s: %s\n",
19-
datetime.strftime('%Y-%m-%d %H:%M:%S.%L'),
20-
severity,
21-
progname,
22-
formatted_message
23-
end
24-
25-
Concurrent.global_logger = lambda do |level, progname, message = nil, &block|
26-
logger.add level, message, progname, &block
27-
end
5+
Concurrent.use_stdlib_logger Logger::DEBUG
286

297
if ENV['COVERAGE'] || ENV['CI'] || ENV['TRAVIS']
308
require 'simplecov'

0 commit comments

Comments
 (0)