|
1 | 1 | require 'thread'
|
2 | 2 | require 'concurrent/delay'
|
3 | 3 | require 'concurrent/errors'
|
4 |
| -require 'concurrent/atomic/atomic_reference' |
5 |
| -require 'concurrent/concern/logging' |
6 | 4 | require 'concurrent/concern/deprecation'
|
7 | 5 | require 'concurrent/executor/immediate_executor'
|
8 | 6 | require 'concurrent/executor/cached_thread_pool'
|
9 | 7 | require 'concurrent/utility/processor_counter'
|
10 | 8 |
|
11 | 9 | module Concurrent
|
12 |
| - extend Concern::Logging |
13 | 10 | extend Concern::Deprecation
|
14 | 11 |
|
15 | 12 | autoload :Options, 'concurrent/options'
|
16 | 13 | autoload :TimerSet, 'concurrent/executor/timer_set'
|
17 | 14 | autoload :ThreadPoolExecutor, 'concurrent/executor/thread_pool_executor'
|
18 | 15 |
|
19 |
| - # @return [Logger] Logger with provided level and output. |
20 |
| - def self.create_simple_logger(level = Logger::FATAL, output = $stderr) |
21 |
| - # TODO (pitr-ch 24-Dec-2016): figure out why it had to be replaced, stdlogger was deadlocking |
22 |
| - lambda do |severity, progname, message = nil, &block| |
23 |
| - return false if severity < level |
24 |
| - |
25 |
| - message = block ? block.call : message |
26 |
| - formatted_message = case message |
27 |
| - when String |
28 |
| - message |
29 |
| - when Exception |
30 |
| - format "%s (%s)\n%s", |
31 |
| - message.message, message.class, (message.backtrace || []).join("\n") |
32 |
| - else |
33 |
| - message.inspect |
34 |
| - end |
35 |
| - |
36 |
| - output.print format "[%s] %5s -- %s: %s\n", |
37 |
| - Time.now.strftime('%Y-%m-%d %H:%M:%S.%L'), |
38 |
| - Logger::SEV_LABEL[severity], |
39 |
| - progname, |
40 |
| - formatted_message |
41 |
| - true |
42 |
| - end |
43 |
| - end |
44 |
| - |
45 |
| - # Use logger created by #create_simple_logger to log concurrent-ruby messages. |
46 |
| - def self.use_simple_logger(level = Logger::FATAL, output = $stderr) |
47 |
| - Concurrent.global_logger = create_simple_logger level, output |
48 |
| - end |
49 |
| - |
50 |
| - # @return [Logger] Logger with provided level and output. |
51 |
| - # @deprecated |
52 |
| - def self.create_stdlib_logger(level = Logger::FATAL, output = $stderr) |
53 |
| - logger = Logger.new(output) |
54 |
| - logger.level = level |
55 |
| - logger.formatter = lambda do |severity, datetime, progname, msg| |
56 |
| - formatted_message = case msg |
57 |
| - when String |
58 |
| - msg |
59 |
| - when Exception |
60 |
| - format "%s (%s)\n%s", |
61 |
| - msg.message, msg.class, (msg.backtrace || []).join("\n") |
62 |
| - else |
63 |
| - msg.inspect |
64 |
| - end |
65 |
| - format "[%s] %5s -- %s: %s\n", |
66 |
| - datetime.strftime('%Y-%m-%d %H:%M:%S.%L'), |
67 |
| - severity, |
68 |
| - progname, |
69 |
| - formatted_message |
70 |
| - end |
71 |
| - |
72 |
| - lambda do |loglevel, progname, message = nil, &block| |
73 |
| - logger.add loglevel, message, progname, &block |
74 |
| - end |
75 |
| - end |
76 |
| - |
77 |
| - # Use logger created by #create_stdlib_logger to log concurrent-ruby messages. |
78 |
| - # @deprecated |
79 |
| - def self.use_stdlib_logger(level = Logger::FATAL, output = $stderr) |
80 |
| - Concurrent.global_logger = create_stdlib_logger level, output |
81 |
| - end |
82 |
| - |
83 |
| - # TODO (pitr-ch 27-Dec-2016): remove deadlocking stdlib_logger methods |
84 |
| - |
85 |
| - # Suppresses all output when used for logging. |
86 |
| - NULL_LOGGER = lambda { |level, progname, message = nil, &block| } |
87 |
| - |
88 |
| - # @!visibility private |
89 |
| - GLOBAL_LOGGER = AtomicReference.new(create_simple_logger(Logger::WARN)) |
90 |
| - private_constant :GLOBAL_LOGGER |
91 |
| - |
92 |
| - def self.global_logger |
93 |
| - GLOBAL_LOGGER.value |
94 |
| - end |
95 |
| - |
96 |
| - def self.global_logger=(value) |
97 |
| - GLOBAL_LOGGER.value = value |
98 |
| - end |
99 |
| - |
100 | 16 | # @!visibility private
|
101 | 17 | GLOBAL_FAST_EXECUTOR = Delay.new { Concurrent.new_fast_executor }
|
102 | 18 | private_constant :GLOBAL_FAST_EXECUTOR
|
|
0 commit comments