makit 0.0.111 → 0.0.112
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +41 -41
- data/exe/makit +5 -5
- data/lib/makit/apache.rb +28 -28
- data/lib/makit/cli/build_commands.rb +500 -500
- data/lib/makit/cli/generators/base_generator.rb +74 -74
- data/lib/makit/cli/generators/dotnet_generator.rb +50 -50
- data/lib/makit/cli/generators/generator_factory.rb +49 -49
- data/lib/makit/cli/generators/node_generator.rb +50 -50
- data/lib/makit/cli/generators/ruby_generator.rb +77 -77
- data/lib/makit/cli/generators/rust_generator.rb +50 -50
- data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -167
- data/lib/makit/cli/generators/templates/node_templates.rb +161 -161
- data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -26
- data/lib/makit/cli/generators/templates/ruby/gemspec.rb +40 -40
- data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -33
- data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -35
- data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -63
- data/lib/makit/cli/generators/templates/ruby/test.rb +39 -39
- data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -29
- data/lib/makit/cli/generators/templates/ruby/version.rb +29 -29
- data/lib/makit/cli/generators/templates/rust_templates.rb +128 -128
- data/lib/makit/cli/main.rb +62 -62
- data/lib/makit/cli/project_commands.rb +868 -868
- data/lib/makit/cli/repository_commands.rb +661 -661
- data/lib/makit/cli/utility_commands.rb +521 -521
- data/lib/makit/commands/factory.rb +359 -359
- data/lib/makit/commands/middleware/base.rb +73 -73
- data/lib/makit/commands/middleware/cache.rb +248 -248
- data/lib/makit/commands/middleware/command_logger.rb +320 -323
- data/lib/makit/commands/middleware/unified_logger.rb +243 -243
- data/lib/makit/commands/middleware/validator.rb +269 -269
- data/lib/makit/commands/request.rb +254 -254
- data/lib/makit/commands/result.rb +323 -323
- data/lib/makit/commands/runner.rb +337 -317
- data/lib/makit/commands/strategies/base.rb +160 -160
- data/lib/makit/commands/strategies/synchronous.rb +134 -134
- data/lib/makit/commands.rb +51 -42
- data/lib/makit/configuration/gitlab_helper.rb +60 -60
- data/lib/makit/configuration/project.rb +127 -127
- data/lib/makit/configuration/rakefile_helper.rb +43 -43
- data/lib/makit/configuration/step.rb +34 -34
- data/lib/makit/configuration.rb +14 -14
- data/lib/makit/content/default_gitignore.rb +7 -7
- data/lib/makit/content/default_rakefile.rb +13 -13
- data/lib/makit/content/gem_rakefile.rb +16 -16
- data/lib/makit/context.rb +1 -1
- data/lib/makit/data.rb +49 -49
- data/lib/makit/directories.rb +141 -141
- data/lib/makit/directory.rb +262 -262
- data/lib/makit/docs/files.rb +89 -89
- data/lib/makit/docs/rake.rb +102 -102
- data/lib/makit/dotnet/project.rb +153 -153
- data/lib/makit/dotnet/solution.rb +38 -38
- data/lib/makit/dotnet/solution_classlib.rb +239 -239
- data/lib/makit/dotnet/solution_console.rb +264 -264
- data/lib/makit/dotnet/solution_maui.rb +354 -354
- data/lib/makit/dotnet/solution_wasm.rb +275 -275
- data/lib/makit/dotnet/solution_wpf.rb +304 -304
- data/lib/makit/dotnet.rb +102 -102
- data/lib/makit/email.rb +90 -90
- data/lib/makit/environment.rb +142 -142
- data/lib/makit/examples/runner.rb +370 -370
- data/lib/makit/exceptions.rb +45 -45
- data/lib/makit/fileinfo.rb +24 -24
- data/lib/makit/files.rb +43 -43
- data/lib/makit/gems.rb +40 -40
- data/lib/makit/git/cli.rb +54 -54
- data/lib/makit/git/repository.rb +90 -90
- data/lib/makit/git.rb +98 -98
- data/lib/makit/gitlab_runner.rb +59 -59
- data/lib/makit/humanize.rb +137 -137
- data/lib/makit/indexer.rb +47 -47
- data/lib/makit/logging/configuration.rb +305 -305
- data/lib/makit/logging/formatters/base.rb +39 -39
- data/lib/makit/logging/formatters/console_formatter.rb +140 -127
- data/lib/makit/logging/formatters/json_formatter.rb +65 -65
- data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -71
- data/lib/makit/logging/formatters/text_formatter.rb +64 -64
- data/lib/makit/logging/log_request.rb +115 -115
- data/lib/makit/logging/logger.rb +163 -159
- data/lib/makit/logging/sinks/console.rb +72 -72
- data/lib/makit/logging/sinks/file_sink.rb +92 -92
- data/lib/makit/logging/sinks/unified_file_sink.rb +303 -303
- data/lib/makit/logging.rb +530 -521
- data/lib/makit/markdown.rb +75 -75
- data/lib/makit/mp/basic_object_mp.rb +17 -17
- data/lib/makit/mp/command_mp.rb +13 -13
- data/lib/makit/mp/command_request.mp.rb +17 -17
- data/lib/makit/mp/project_mp.rb +199 -199
- data/lib/makit/mp/string_mp.rb +193 -348
- data/lib/makit/nuget.rb +74 -74
- data/lib/makit/port.rb +32 -32
- data/lib/makit/process.rb +163 -163
- data/lib/makit/protoc.rb +107 -107
- data/lib/makit/rake/cli.rb +196 -196
- data/lib/makit/rake.rb +25 -25
- data/lib/makit/ruby/cli.rb +185 -185
- data/lib/makit/ruby.rb +25 -25
- data/lib/makit/secrets.rb +51 -51
- data/lib/makit/serializer.rb +130 -117
- data/lib/makit/services/builder.rb +186 -186
- data/lib/makit/services/error_handler.rb +226 -226
- data/lib/makit/services/repository_manager.rb +229 -229
- data/lib/makit/services/validator.rb +112 -112
- data/lib/makit/setup/classlib.rb +53 -53
- data/lib/makit/setup/gem.rb +30 -17
- data/lib/makit/setup/runner.rb +45 -40
- data/lib/makit/setup.rb +5 -0
- data/lib/makit/show.rb +110 -110
- data/lib/makit/storage.rb +126 -126
- data/lib/makit/symbols.rb +170 -161
- data/lib/makit/task_info.rb +128 -128
- data/lib/makit/tasks/at_exit.rb +13 -13
- data/lib/makit/tasks/build.rb +19 -18
- data/lib/makit/tasks/clean.rb +11 -11
- data/lib/makit/tasks/hook_manager.rb +393 -239
- data/lib/makit/tasks/init.rb +47 -47
- data/lib/makit/tasks/integrate.rb +17 -15
- data/lib/makit/tasks/pull_incoming.rb +11 -12
- data/lib/makit/tasks/setup.rb +6 -6
- data/lib/makit/tasks/sync.rb +12 -11
- data/lib/makit/tasks/tag.rb +15 -0
- data/lib/makit/tasks/task_monkey_patch.rb +79 -79
- data/lib/makit/tasks.rb +10 -0
- data/lib/makit/test_cache.rb +239 -239
- data/lib/makit/tree.rb +37 -37
- data/lib/makit/v1/makit.v1_pb.rb +34 -34
- data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
- data/lib/makit/version.rb +5 -5
- data/lib/makit/version_util.rb +21 -0
- data/lib/makit/wix.rb +95 -95
- data/lib/makit/yaml.rb +29 -29
- data/lib/makit/zip.rb +17 -17
- data/lib/makit copy.rb +44 -0
- data/lib/makit.rb +40 -8
- metadata +50 -7
- data/lib/makit/command_runner.rb +0 -463
- data/lib/makit/commands/compatibility.rb +0 -365
- data/lib/makit/task_hooks.rb +0 -125
@@ -1,39 +1,39 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Makit
|
4
|
-
module Logging
|
5
|
-
module Formatters
|
6
|
-
# Base class for all logging formatters
|
7
|
-
#
|
8
|
-
# Formatters handle the conversion of log requests into formatted strings
|
9
|
-
# that can be written to various outputs (console, files, etc.).
|
10
|
-
# This separates formatting concerns from output routing concerns.
|
11
|
-
#
|
12
|
-
# @example Creating a custom formatter
|
13
|
-
# class CustomFormatter < Base
|
14
|
-
# def format(log_request)
|
15
|
-
# "#{log_request.level.upcase}: #{log_request.message}"
|
16
|
-
# end
|
17
|
-
# end
|
18
|
-
class Base
|
19
|
-
# Format a log request into a string
|
20
|
-
#
|
21
|
-
# @param log_request [LogRequest] the log request to format
|
22
|
-
# @return [String] the formatted log entry
|
23
|
-
def format(log_request)
|
24
|
-
raise NotImplementedError, "Subclasses must implement #format"
|
25
|
-
end
|
26
|
-
|
27
|
-
# Get formatter configuration
|
28
|
-
#
|
29
|
-
# @return [Hash] formatter configuration
|
30
|
-
def config
|
31
|
-
{
|
32
|
-
name: self.class.name.split("::").last,
|
33
|
-
type: self.class.name,
|
34
|
-
}
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Makit
|
4
|
+
module Logging
|
5
|
+
module Formatters
|
6
|
+
# Base class for all logging formatters
|
7
|
+
#
|
8
|
+
# Formatters handle the conversion of log requests into formatted strings
|
9
|
+
# that can be written to various outputs (console, files, etc.).
|
10
|
+
# This separates formatting concerns from output routing concerns.
|
11
|
+
#
|
12
|
+
# @example Creating a custom formatter
|
13
|
+
# class CustomFormatter < Base
|
14
|
+
# def format(log_request)
|
15
|
+
# "#{log_request.level.upcase}: #{log_request.message}"
|
16
|
+
# end
|
17
|
+
# end
|
18
|
+
class Base
|
19
|
+
# Format a log request into a string
|
20
|
+
#
|
21
|
+
# @param log_request [LogRequest] the log request to format
|
22
|
+
# @return [String] the formatted log entry
|
23
|
+
def format(log_request)
|
24
|
+
raise NotImplementedError, "Subclasses must implement #format"
|
25
|
+
end
|
26
|
+
|
27
|
+
# Get formatter configuration
|
28
|
+
#
|
29
|
+
# @return [Hash] formatter configuration
|
30
|
+
def config
|
31
|
+
{
|
32
|
+
name: self.class.name.split("::").last,
|
33
|
+
type: self.class.name,
|
34
|
+
}
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -1,127 +1,140 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
#
|
34
|
-
#
|
35
|
-
# @param
|
36
|
-
# @
|
37
|
-
def
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
#
|
83
|
-
#
|
84
|
-
# @return [
|
85
|
-
def
|
86
|
-
|
87
|
-
|
88
|
-
:
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
when :
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
begin
|
4
|
+
require "colorize"
|
5
|
+
rescue LoadError
|
6
|
+
# colorize gem not available, define a no-op colorize method
|
7
|
+
class String
|
8
|
+
def colorize(*args)
|
9
|
+
self
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
require_relative "base"
|
14
|
+
|
15
|
+
module Makit
|
16
|
+
module Logging
|
17
|
+
module Formatters
|
18
|
+
# Console formatter for colored log output
|
19
|
+
#
|
20
|
+
# Formats log requests for console display with colors, symbols, and optional
|
21
|
+
# timestamps/levels. This is specifically designed for human-readable console output.
|
22
|
+
#
|
23
|
+
# @example
|
24
|
+
# formatter = ConsoleFormatter.new
|
25
|
+
# formatted = formatter.format(log_request)
|
26
|
+
# # => "→ Processing started" (with appropriate color)
|
27
|
+
class ConsoleFormatter < Base
|
28
|
+
# @return [Boolean] whether to show timestamps
|
29
|
+
attr_reader :show_timestamp
|
30
|
+
# @return [Boolean] whether to show log levels
|
31
|
+
attr_reader :show_level
|
32
|
+
|
33
|
+
# Initialize console formatter
|
34
|
+
#
|
35
|
+
# @param show_timestamp [Boolean] whether to show timestamps (default: false)
|
36
|
+
# @param show_level [Boolean] whether to show log levels (default: false)
|
37
|
+
def initialize(show_timestamp: false, show_level: false)
|
38
|
+
@show_timestamp = show_timestamp
|
39
|
+
@show_level = show_level
|
40
|
+
end
|
41
|
+
|
42
|
+
# Format log request for console display
|
43
|
+
#
|
44
|
+
# @param log_request [LogRequest] the log request to format
|
45
|
+
# @return [String] console formatted log entry with colors
|
46
|
+
def format(log_request)
|
47
|
+
parts = []
|
48
|
+
|
49
|
+
# Add timestamp if enabled
|
50
|
+
if @show_timestamp
|
51
|
+
timestamp = log_request.timestamp.strftime("%H:%M:%S")
|
52
|
+
parts << "[#{timestamp}]".colorize(:light_black)
|
53
|
+
end
|
54
|
+
|
55
|
+
# Add log level if enabled
|
56
|
+
if @show_level
|
57
|
+
level_str = log_request.level.to_s.upcase
|
58
|
+
level_color = get_level_color(log_request.level)
|
59
|
+
parts << level_str.colorize(level_color)
|
60
|
+
end
|
61
|
+
|
62
|
+
# Add symbol and message
|
63
|
+
symbol = get_level_symbol(log_request.level)
|
64
|
+
symbol_color = get_level_color(log_request.level)
|
65
|
+
message = log_request.message
|
66
|
+
|
67
|
+
# Special handling for task messages - no symbol, no context, just the message
|
68
|
+
if log_request.context[:task_message]
|
69
|
+
parts << message
|
70
|
+
else
|
71
|
+
# Add context if present (only for non-task messages)
|
72
|
+
if !log_request.context.empty?
|
73
|
+
context_str = log_request.context.map { |k, v| "#{k}=#{v}" }.join(" ")
|
74
|
+
message += " #{context_str}".colorize(:light_black)
|
75
|
+
end
|
76
|
+
parts << "#{symbol} #{message}".colorize(symbol_color)
|
77
|
+
end
|
78
|
+
|
79
|
+
parts.join(" ")
|
80
|
+
end
|
81
|
+
|
82
|
+
# Get formatter configuration
|
83
|
+
#
|
84
|
+
# @return [Hash] formatter configuration
|
85
|
+
def config
|
86
|
+
super.merge(
|
87
|
+
show_timestamp: @show_timestamp,
|
88
|
+
show_level: @show_level,
|
89
|
+
)
|
90
|
+
end
|
91
|
+
|
92
|
+
private
|
93
|
+
|
94
|
+
# Get the color for a log level
|
95
|
+
#
|
96
|
+
# @param level [Symbol] the log level
|
97
|
+
# @return [Symbol] the color for the level
|
98
|
+
def get_level_color(level)
|
99
|
+
case level
|
100
|
+
when :debug
|
101
|
+
:grey
|
102
|
+
when :info
|
103
|
+
:grey
|
104
|
+
when :warn
|
105
|
+
:light_yellow
|
106
|
+
when :error, :fatal
|
107
|
+
:light_red
|
108
|
+
when :success
|
109
|
+
:green
|
110
|
+
else
|
111
|
+
:white
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
# Get the symbol for a log level
|
116
|
+
#
|
117
|
+
# @param level [Symbol] the log level
|
118
|
+
# @return [String] the symbol for the level
|
119
|
+
def get_level_symbol(level)
|
120
|
+
case level
|
121
|
+
when :debug
|
122
|
+
"•"
|
123
|
+
when :info
|
124
|
+
" " #"→"
|
125
|
+
when :warn
|
126
|
+
"!" #"⚠"
|
127
|
+
when :error
|
128
|
+
"✗"
|
129
|
+
when :fatal
|
130
|
+
"💀"
|
131
|
+
when :success
|
132
|
+
"✓"
|
133
|
+
else
|
134
|
+
"•"
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
@@ -1,65 +1,65 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "json"
|
4
|
-
require_relative "base"
|
5
|
-
|
6
|
-
module Makit
|
7
|
-
module Logging
|
8
|
-
module Formatters
|
9
|
-
# JSON formatter for structured logging
|
10
|
-
#
|
11
|
-
# Formats log requests as JSON objects with timestamp, level, message, and context.
|
12
|
-
# This is ideal for log aggregation systems and structured data analysis.
|
13
|
-
#
|
14
|
-
# @example
|
15
|
-
# formatter = JsonFormatter.new
|
16
|
-
# formatted = formatter.format(log_request)
|
17
|
-
# # => '{"timestamp":"2024-01-15T10:30:45Z","level":"INFO","message":"User logged in","context":{"user_id":123}}'
|
18
|
-
class JsonFormatter < Base
|
19
|
-
# @return [Hash] additional options for JSON formatting
|
20
|
-
attr_reader :options
|
21
|
-
|
22
|
-
# Initialize JSON formatter
|
23
|
-
#
|
24
|
-
# @param options [Hash] JSON generation options
|
25
|
-
def initialize(options: {})
|
26
|
-
@options = {
|
27
|
-
indent: nil,
|
28
|
-
space: nil,
|
29
|
-
space_before: nil,
|
30
|
-
object_nl: nil,
|
31
|
-
array_nl: nil,
|
32
|
-
allow_nan: false,
|
33
|
-
max_nesting: 100,
|
34
|
-
}.merge(options)
|
35
|
-
end
|
36
|
-
|
37
|
-
# Format log request as JSON
|
38
|
-
#
|
39
|
-
# @param log_request [LogRequest] the log request to format
|
40
|
-
# @return [String] JSON formatted log entry
|
41
|
-
def format(log_request)
|
42
|
-
log_data = {
|
43
|
-
timestamp: log_request.timestamp.iso8601,
|
44
|
-
level: log_request.level.to_s.upcase,
|
45
|
-
message: log_request.message,
|
46
|
-
}
|
47
|
-
|
48
|
-
# Add context if present
|
49
|
-
log_data[:context] = log_request.context unless log_request.context.empty?
|
50
|
-
|
51
|
-
JSON.generate(log_data, @options)
|
52
|
-
end
|
53
|
-
|
54
|
-
# Get formatter configuration
|
55
|
-
#
|
56
|
-
# @return [Hash] formatter configuration including JSON options
|
57
|
-
def config
|
58
|
-
super.merge(
|
59
|
-
json_options: @options,
|
60
|
-
)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "json"
|
4
|
+
require_relative "base"
|
5
|
+
|
6
|
+
module Makit
|
7
|
+
module Logging
|
8
|
+
module Formatters
|
9
|
+
# JSON formatter for structured logging
|
10
|
+
#
|
11
|
+
# Formats log requests as JSON objects with timestamp, level, message, and context.
|
12
|
+
# This is ideal for log aggregation systems and structured data analysis.
|
13
|
+
#
|
14
|
+
# @example
|
15
|
+
# formatter = JsonFormatter.new
|
16
|
+
# formatted = formatter.format(log_request)
|
17
|
+
# # => '{"timestamp":"2024-01-15T10:30:45Z","level":"INFO","message":"User logged in","context":{"user_id":123}}'
|
18
|
+
class JsonFormatter < Base
|
19
|
+
# @return [Hash] additional options for JSON formatting
|
20
|
+
attr_reader :options
|
21
|
+
|
22
|
+
# Initialize JSON formatter
|
23
|
+
#
|
24
|
+
# @param options [Hash] JSON generation options
|
25
|
+
def initialize(options: {})
|
26
|
+
@options = {
|
27
|
+
indent: nil,
|
28
|
+
space: nil,
|
29
|
+
space_before: nil,
|
30
|
+
object_nl: nil,
|
31
|
+
array_nl: nil,
|
32
|
+
allow_nan: false,
|
33
|
+
max_nesting: 100,
|
34
|
+
}.merge(options)
|
35
|
+
end
|
36
|
+
|
37
|
+
# Format log request as JSON
|
38
|
+
#
|
39
|
+
# @param log_request [LogRequest] the log request to format
|
40
|
+
# @return [String] JSON formatted log entry
|
41
|
+
def format(log_request)
|
42
|
+
log_data = {
|
43
|
+
timestamp: log_request.timestamp.iso8601,
|
44
|
+
level: log_request.level.to_s.upcase,
|
45
|
+
message: log_request.message,
|
46
|
+
}
|
47
|
+
|
48
|
+
# Add context if present
|
49
|
+
log_data[:context] = log_request.context unless log_request.context.empty?
|
50
|
+
|
51
|
+
JSON.generate(log_data, @options)
|
52
|
+
end
|
53
|
+
|
54
|
+
# Get formatter configuration
|
55
|
+
#
|
56
|
+
# @return [Hash] formatter configuration including JSON options
|
57
|
+
def config
|
58
|
+
super.merge(
|
59
|
+
json_options: @options,
|
60
|
+
)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -1,71 +1,71 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "base"
|
4
|
-
|
5
|
-
module Makit
|
6
|
-
module Logging
|
7
|
-
module Formatters
|
8
|
-
# Plain text formatter with just the message
|
9
|
-
#
|
10
|
-
# Formats log requests as plain text containing only the message content.
|
11
|
-
# This is useful for simple log files where only the message matters.
|
12
|
-
#
|
13
|
-
# @example
|
14
|
-
# formatter = PlainTextFormatter.new
|
15
|
-
# formatted = formatter.format(log_request)
|
16
|
-
# # => 'User logged in'
|
17
|
-
class PlainTextFormatter < Base
|
18
|
-
# @return [Boolean] whether to include context in output
|
19
|
-
attr_reader :include_context
|
20
|
-
|
21
|
-
# Initialize plain text formatter
|
22
|
-
#
|
23
|
-
# @param include_context [Boolean] whether to include context in output
|
24
|
-
def initialize(include_context: false)
|
25
|
-
@include_context = include_context
|
26
|
-
end
|
27
|
-
|
28
|
-
# Format log request as plain text
|
29
|
-
#
|
30
|
-
# @param log_request [LogRequest] the log request to format
|
31
|
-
# @return [String] plain text formatted log entry
|
32
|
-
def format(log_request)
|
33
|
-
message = log_request.message
|
34
|
-
|
35
|
-
# Add context if enabled and present
|
36
|
-
if @include_context && !log_request.context.empty?
|
37
|
-
# Create a more readable context representation
|
38
|
-
context_parts = log_request.context.map do |k, v|
|
39
|
-
# Format values nicely based on their type
|
40
|
-
formatted_value = case v
|
41
|
-
when String
|
42
|
-
v.include?(" ") ? "\"#{v}\"" : v
|
43
|
-
when Hash, Array
|
44
|
-
v.inspect
|
45
|
-
when Time
|
46
|
-
v.strftime("%Y-%m-%d %H:%M:%S")
|
47
|
-
else
|
48
|
-
v.to_s
|
49
|
-
end
|
50
|
-
"#{k}: #{formatted_value}"
|
51
|
-
end
|
52
|
-
|
53
|
-
context_str = context_parts.join(", ")
|
54
|
-
message += " (#{context_str})"
|
55
|
-
end
|
56
|
-
|
57
|
-
message
|
58
|
-
end
|
59
|
-
|
60
|
-
# Get formatter configuration
|
61
|
-
#
|
62
|
-
# @return [Hash] formatter configuration
|
63
|
-
def config
|
64
|
-
super.merge(
|
65
|
-
include_context: @include_context,
|
66
|
-
)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "base"
|
4
|
+
|
5
|
+
module Makit
|
6
|
+
module Logging
|
7
|
+
module Formatters
|
8
|
+
# Plain text formatter with just the message
|
9
|
+
#
|
10
|
+
# Formats log requests as plain text containing only the message content.
|
11
|
+
# This is useful for simple log files where only the message matters.
|
12
|
+
#
|
13
|
+
# @example
|
14
|
+
# formatter = PlainTextFormatter.new
|
15
|
+
# formatted = formatter.format(log_request)
|
16
|
+
# # => 'User logged in'
|
17
|
+
class PlainTextFormatter < Base
|
18
|
+
# @return [Boolean] whether to include context in output
|
19
|
+
attr_reader :include_context
|
20
|
+
|
21
|
+
# Initialize plain text formatter
|
22
|
+
#
|
23
|
+
# @param include_context [Boolean] whether to include context in output
|
24
|
+
def initialize(include_context: false)
|
25
|
+
@include_context = include_context
|
26
|
+
end
|
27
|
+
|
28
|
+
# Format log request as plain text
|
29
|
+
#
|
30
|
+
# @param log_request [LogRequest] the log request to format
|
31
|
+
# @return [String] plain text formatted log entry
|
32
|
+
def format(log_request)
|
33
|
+
message = log_request.message
|
34
|
+
|
35
|
+
# Add context if enabled and present
|
36
|
+
if @include_context && !log_request.context.empty?
|
37
|
+
# Create a more readable context representation
|
38
|
+
context_parts = log_request.context.map do |k, v|
|
39
|
+
# Format values nicely based on their type
|
40
|
+
formatted_value = case v
|
41
|
+
when String
|
42
|
+
v.include?(" ") ? "\"#{v}\"" : v
|
43
|
+
when Hash, Array
|
44
|
+
v.inspect
|
45
|
+
when Time
|
46
|
+
v.strftime("%Y-%m-%d %H:%M:%S")
|
47
|
+
else
|
48
|
+
v.to_s
|
49
|
+
end
|
50
|
+
"#{k}: #{formatted_value}"
|
51
|
+
end
|
52
|
+
|
53
|
+
context_str = context_parts.join(", ")
|
54
|
+
message += " (#{context_str})"
|
55
|
+
end
|
56
|
+
|
57
|
+
message
|
58
|
+
end
|
59
|
+
|
60
|
+
# Get formatter configuration
|
61
|
+
#
|
62
|
+
# @return [Hash] formatter configuration
|
63
|
+
def config
|
64
|
+
super.merge(
|
65
|
+
include_context: @include_context,
|
66
|
+
)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|