@@ -11,6 +11,8 @@ use clap::Parser;
11
11
use registry_helper:: RegistryHelper ;
12
12
use schemars:: schema_for;
13
13
use std:: process:: exit;
14
+ use tracing:: { debug, error} ;
15
+ use tracing_subscriber:: { EnvFilter , Layer , prelude:: __tracing_subscriber_SubscriberExt} ;
14
16
15
17
use crate :: config:: Registry ;
16
18
@@ -28,27 +30,29 @@ fn main() {
28
30
#[ cfg( debug_assertions) ]
29
31
check_debug ( ) ;
30
32
33
+ enable_tracing ( ) ;
34
+
31
35
let args = Arguments :: parse ( ) ;
32
36
match args. subcommand {
33
37
args:: SubCommand :: Query { key_path, value_name, recurse } => {
34
- eprintln ! ( "Get key_path: {key_path}, value_name: {value_name:?}, recurse: {recurse}" ) ;
38
+ debug ! ( "Get key_path: {key_path}, value_name: {value_name:?}, recurse: {recurse}" ) ;
35
39
} ,
36
40
args:: SubCommand :: Set { key_path, value } => {
37
- eprintln ! ( "Set key_path: {key_path}, value: {value}" ) ;
41
+ debug ! ( "Set key_path: {key_path}, value: {value}" ) ;
38
42
} ,
39
43
args:: SubCommand :: Remove { key_path, value_name, recurse } => {
40
- eprintln ! ( "Remove key_path: {key_path}, value_name: {value_name:?}, recurse: {recurse}" ) ;
44
+ debug ! ( "Remove key_path: {key_path}, value_name: {value_name:?}, recurse: {recurse}" ) ;
41
45
} ,
42
46
args:: SubCommand :: Find { key_path, find, recurse, keys_only, values_only } => {
43
- eprintln ! ( "Find key_path: {key_path}, find: {find}, recurse: {recurse:?}, keys_only: {keys_only:?}, values_only: {values_only:?}" ) ;
47
+ debug ! ( "Find key_path: {key_path}, find: {find}, recurse: {recurse:?}, keys_only: {keys_only:?}, values_only: {values_only:?}" ) ;
44
48
} ,
45
49
args:: SubCommand :: Config { subcommand } => {
46
50
match subcommand {
47
51
args:: ConfigSubCommand :: Get { input} => {
48
52
let reg_helper = match RegistryHelper :: new ( & input) {
49
53
Ok ( reg_helper) => reg_helper,
50
54
Err ( err) => {
51
- eprintln ! ( "Error: {err}" ) ;
55
+ error ! ( "{err}" ) ;
52
56
exit ( EXIT_INVALID_INPUT ) ;
53
57
}
54
58
} ;
@@ -58,7 +62,7 @@ fn main() {
58
62
println ! ( "{json}" ) ;
59
63
} ,
60
64
Err ( err) => {
61
- eprintln ! ( "Error: {err}" ) ;
65
+ error ! ( "{err}" ) ;
62
66
exit ( EXIT_REGISTRY_ERROR ) ;
63
67
}
64
68
}
@@ -67,7 +71,7 @@ fn main() {
67
71
let mut reg_helper = match RegistryHelper :: new ( & input) {
68
72
Ok ( reg_helper) => reg_helper,
69
73
Err ( err) => {
70
- eprintln ! ( "Error: {err}" ) ;
74
+ error ! ( "{err}" ) ;
71
75
exit ( EXIT_INVALID_INPUT ) ;
72
76
}
73
77
} ;
@@ -82,7 +86,7 @@ fn main() {
82
86
}
83
87
} ,
84
88
Err ( err) => {
85
- eprintln ! ( "Error: {err}" ) ;
89
+ error ! ( "{err}" ) ;
86
90
exit ( EXIT_REGISTRY_ERROR ) ;
87
91
}
88
92
}
@@ -91,14 +95,14 @@ fn main() {
91
95
let reg_helper = match RegistryHelper :: new ( & input) {
92
96
Ok ( reg_helper) => reg_helper,
93
97
Err ( err) => {
94
- eprintln ! ( "Error: {err}" ) ;
98
+ error ! ( "{err}" ) ;
95
99
exit ( EXIT_INVALID_INPUT ) ;
96
100
}
97
101
} ;
98
102
match reg_helper. remove ( ) {
99
103
Ok ( ( ) ) => { } ,
100
104
Err ( err) => {
101
- eprintln ! ( "Error: {err}" ) ;
105
+ error ! ( "{err}" ) ;
102
106
exit ( EXIT_REGISTRY_ERROR ) ;
103
107
}
104
108
}
@@ -115,6 +119,25 @@ fn main() {
115
119
exit ( EXIT_SUCCESS ) ;
116
120
}
117
121
122
+ pub fn enable_tracing ( ) {
123
+ let filter = EnvFilter :: try_from_default_env ( )
124
+ . or_else ( |_| EnvFilter :: try_new ( "trace" ) )
125
+ . unwrap_or_default ( ) ;
126
+ let layer = tracing_subscriber:: fmt:: Layer :: default ( ) . with_writer ( std:: io:: stderr) ;
127
+ let fmt = layer
128
+ . with_ansi ( false )
129
+ . with_level ( true )
130
+ . with_line_number ( true )
131
+ . json ( )
132
+ . boxed ( ) ;
133
+
134
+ let subscriber = tracing_subscriber:: Registry :: default ( ) . with ( fmt) . with ( filter) ;
135
+
136
+ if tracing:: subscriber:: set_global_default ( subscriber) . is_err ( ) {
137
+ eprintln ! ( "Unable to set global default tracing subscriber. Tracing is diabled." ) ;
138
+ }
139
+ }
140
+
118
141
#[ cfg( debug_assertions) ]
119
142
fn check_debug ( ) {
120
143
if env:: var ( "DEBUG_REGISTRY" ) . is_ok ( ) {
0 commit comments