@@ -11,6 +11,8 @@ use clap::Parser;
1111use registry_helper:: RegistryHelper ;
1212use schemars:: schema_for;
1313use std:: process:: exit;
14+ use tracing:: { debug, error} ;
15+ use tracing_subscriber:: { EnvFilter , Layer , prelude:: __tracing_subscriber_SubscriberExt} ;
1416
1517use crate :: config:: Registry ;
1618
@@ -28,27 +30,29 @@ fn main() {
2830 #[ cfg( debug_assertions) ]
2931 check_debug ( ) ;
3032
33+ enable_tracing ( ) ;
34+
3135 let args = Arguments :: parse ( ) ;
3236 match args. subcommand {
3337 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}" ) ;
3539 } ,
3640 args:: SubCommand :: Set { key_path, value } => {
37- eprintln ! ( "Set key_path: {key_path}, value: {value}" ) ;
41+ debug ! ( "Set key_path: {key_path}, value: {value}" ) ;
3842 } ,
3943 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}" ) ;
4145 } ,
4246 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:?}" ) ;
4448 } ,
4549 args:: SubCommand :: Config { subcommand } => {
4650 match subcommand {
4751 args:: ConfigSubCommand :: Get { input} => {
4852 let reg_helper = match RegistryHelper :: new ( & input) {
4953 Ok ( reg_helper) => reg_helper,
5054 Err ( err) => {
51- eprintln ! ( "Error: {err}" ) ;
55+ error ! ( "{err}" ) ;
5256 exit ( EXIT_INVALID_INPUT ) ;
5357 }
5458 } ;
@@ -58,7 +62,7 @@ fn main() {
5862 println ! ( "{json}" ) ;
5963 } ,
6064 Err ( err) => {
61- eprintln ! ( "Error: {err}" ) ;
65+ error ! ( "{err}" ) ;
6266 exit ( EXIT_REGISTRY_ERROR ) ;
6367 }
6468 }
@@ -67,7 +71,7 @@ fn main() {
6771 let mut reg_helper = match RegistryHelper :: new ( & input) {
6872 Ok ( reg_helper) => reg_helper,
6973 Err ( err) => {
70- eprintln ! ( "Error: {err}" ) ;
74+ error ! ( "{err}" ) ;
7175 exit ( EXIT_INVALID_INPUT ) ;
7276 }
7377 } ;
@@ -82,7 +86,7 @@ fn main() {
8286 }
8387 } ,
8488 Err ( err) => {
85- eprintln ! ( "Error: {err}" ) ;
89+ error ! ( "{err}" ) ;
8690 exit ( EXIT_REGISTRY_ERROR ) ;
8791 }
8892 }
@@ -91,14 +95,14 @@ fn main() {
9195 let reg_helper = match RegistryHelper :: new ( & input) {
9296 Ok ( reg_helper) => reg_helper,
9397 Err ( err) => {
94- eprintln ! ( "Error: {err}" ) ;
98+ error ! ( "{err}" ) ;
9599 exit ( EXIT_INVALID_INPUT ) ;
96100 }
97101 } ;
98102 match reg_helper. remove ( ) {
99103 Ok ( ( ) ) => { } ,
100104 Err ( err) => {
101- eprintln ! ( "Error: {err}" ) ;
105+ error ! ( "{err}" ) ;
102106 exit ( EXIT_REGISTRY_ERROR ) ;
103107 }
104108 }
@@ -115,6 +119,25 @@ fn main() {
115119 exit ( EXIT_SUCCESS ) ;
116120}
117121
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+
118141#[ cfg( debug_assertions) ]
119142fn check_debug ( ) {
120143 if env:: var ( "DEBUG_REGISTRY" ) . is_ok ( ) {
0 commit comments