@@ -26,7 +26,7 @@ use vmm::resources::VmResources;
26
26
use vmm:: signal_handler:: register_signal_handlers;
27
27
use vmm:: version_map:: { FC_VERSION_TO_SNAP_VERSION , VERSION_MAP } ;
28
28
use vmm:: vmm_config:: instance_info:: { InstanceInfo , VmState } ;
29
- use vmm:: vmm_config:: logger:: Level ;
29
+ use vmm:: vmm_config:: logger:: LevelFilter ;
30
30
use vmm:: vmm_config:: metrics:: { init_metrics, MetricsConfig } ;
31
31
use vmm:: { EventManager , FcExitCode , HTTP_MAX_PAYLOAD_SIZE } ;
32
32
@@ -47,8 +47,13 @@ enum MainError {
47
47
ParseArguments ( #[ from] utils:: arg_parser:: Error ) ,
48
48
#[ error( "When printing Snapshot Data format: {0}" ) ]
49
49
PrintSnapshotDataFormat ( #[ from] SnapshotVersionError ) ,
50
- #[ error( "Invalid value for logger level: {0}.Possible values: [Error, Warning, Info, Debug]" ) ]
51
- InvalidLogLevel ( <Level as FromStr >:: Err ) ,
50
+ #[ error(
51
+ "Invalid value for logger level: {0}.Possible values: [Off, Error, Warning, Info, Debug, \
52
+ Trace]"
53
+ ) ]
54
+ InvalidLogLevel ( <LevelFilter as FromStr >:: Err ) ,
55
+ #[ error( "Failed to deserialize log filter: {0}" ) ]
56
+ DeserializeLogFilter ( serde_json:: Error ) ,
52
57
#[ error( "Could not initialize logger: {0}" ) ]
53
58
LoggerInitialization ( vmm:: vmm_config:: logger:: InitLoggerError ) ,
54
59
#[ error( "Could not initialize metrics: {0:?}" ) ]
@@ -173,6 +178,27 @@ fn main_exec() -> Result<(), MainError> {
173
178
"Path to a file that contains metadata in JSON format to add to the mmds." ,
174
179
) ,
175
180
)
181
+ . arg (
182
+ Argument :: new ( "start-time-us" ) . takes_value ( true ) . help (
183
+ "Process start time (wall clock, microseconds). This parameter is optional." ,
184
+ ) ,
185
+ )
186
+ . arg ( Argument :: new ( "start-time-cpu-us" ) . takes_value ( true ) . help (
187
+ "Process start CPU time (wall clock, microseconds). This parameter is optional." ,
188
+ ) )
189
+ . arg ( Argument :: new ( "parent-cpu-time-us" ) . takes_value ( true ) . help (
190
+ "Parent process CPU time (wall clock, microseconds). This parameter is optional." ,
191
+ ) )
192
+ . arg (
193
+ Argument :: new ( "config-file" )
194
+ . takes_value ( true )
195
+ . help ( "Path to a file that contains the microVM configuration in JSON format." ) ,
196
+ )
197
+ . arg (
198
+ Argument :: new ( MMDS_CONTENT_ARG ) . takes_value ( true ) . help (
199
+ "Path to a file that contains metadata in JSON format to add to the mmds." ,
200
+ ) ,
201
+ )
176
202
. arg (
177
203
Argument :: new ( "no-api" )
178
204
. takes_value ( false )
@@ -187,6 +213,11 @@ fn main_exec() -> Result<(), MainError> {
187
213
. takes_value ( true )
188
214
. help ( "Path to a fifo or a file used for configuring the logger on startup." ) ,
189
215
)
216
+ . arg (
217
+ Argument :: new ( "log-filter" )
218
+ . takes_value ( true )
219
+ . help ( "Filter for logging, if set overrides `level`." ) ,
220
+ )
190
221
. arg (
191
222
Argument :: new ( "level" )
192
223
. takes_value ( true )
@@ -270,15 +301,21 @@ fn main_exec() -> Result<(), MainError> {
270
301
let logger_handles = {
271
302
let level_res = arguments
272
303
. single_value ( "level" )
273
- . map ( |s| Level :: from_str ( s) )
304
+ . map ( |s| LevelFilter :: from_str ( s) )
274
305
. transpose ( ) ;
275
306
let level = level_res. map_err ( MainError :: InvalidLogLevel ) ?;
276
307
308
+ let filter = if let Some ( log_filter) = arguments. single_value ( "log-filter" ) {
309
+ Some ( serde_json:: from_str ( log_filter) . map_err ( MainError :: DeserializeLogFilter ) ?)
310
+ } else {
311
+ None
312
+ } ;
277
313
let logger_config = vmm:: vmm_config:: logger:: LoggerConfig {
278
314
log_path : arguments. single_value ( "log-path" ) . map ( PathBuf :: from) ,
279
315
level,
280
316
show_level : Some ( arguments. flag_present ( "show-level" ) ) ,
281
317
show_log_origin : Some ( arguments. flag_present ( "show-log-origin" ) ) ,
318
+ filter,
282
319
} ;
283
320
logger_config
284
321
. init ( )
0 commit comments