@@ -3,6 +3,7 @@ extern crate clap;
33
44extern crate api_server;
55extern crate devices;
6+ extern crate logger;
67extern crate net_util;
78extern crate sys_util;
89extern crate vmm;
@@ -18,19 +19,15 @@ use api_server::{ApiRequest, ApiServer};
1819use api_server:: request:: instance_info:: { InstanceInfo , InstanceState } ;
1920use api_server:: request:: sync:: { DeviceState , NetworkInterfaceBody , VsockJsonBody } ;
2021use net_util:: MacAddr ;
21- use sys_util:: { syslog, EventFd , GuestAddress } ;
22+ use sys_util:: { EventFd , GuestAddress } ;
23+ use logger:: Logger ;
2224use vmm:: { CMDLINE_MAX_SIZE , CMDLINE_OFFSET , KERNEL_START_OFFSET } ;
2325use vmm:: { kernel_cmdline, KernelConfig } ;
2426use vmm:: device_config:: BlockDeviceConfig ;
2527
2628const DEFAULT_SUBNET_MASK : & str = "255.255.255.0" ;
2729
2830fn main ( ) {
29- if let Err ( e) = syslog:: init ( ) {
30- println ! ( "failed to initialize syslog: {:?}" , e) ;
31- return ;
32- }
33-
3431 let cmd_arguments = App :: new ( "firecracker" )
3532 . version ( crate_version ! ( ) )
3633 . author ( crate_authors ! ( ) )
@@ -111,6 +108,13 @@ fn main() {
111108 . long ( "guest-mac" )
112109 . help ( "The MAC address of the guest network interface." )
113110 . takes_value ( true ) ,
111+ )
112+ . arg (
113+ Arg :: with_name ( "log_file" )
114+ . short ( "l" )
115+ . long ( "log-file" )
116+ . help ( "File to serve as logging output" )
117+ . takes_value ( true ) ,
114118 ) ,
115119 )
116120 . get_matches ( ) ;
@@ -158,6 +162,27 @@ fn vmm_no_api_handler(
158162 from_api,
159163 ) . expect ( "cannot create VMM" ) ;
160164
165+ // this is temporary; user will be able to customize logging subsystem through API
166+ if cmd_arguments. is_present ( "log_file" ) {
167+ if let Err ( e) = Logger :: new ( )
168+ . set_level ( logger:: Level :: Info )
169+ . init ( Some ( String :: from (
170+ cmd_arguments. value_of ( "log_file" ) . unwrap ( ) ,
171+ ) ) ) {
172+ eprintln ! (
173+ "main: Failed to initialize logging subsystem: {:?}. Trying without a file" ,
174+ e
175+ ) ;
176+ if let Err ( e) = Logger :: new ( ) . set_level ( logger:: Level :: Info ) . init ( None ) {
177+ panic ! ( "main: Failed to initialize logging subsystem: {:?}" , e) ;
178+ }
179+ }
180+ } else {
181+ if let Err ( e) = Logger :: new ( ) . set_level ( logger:: Level :: Info ) . init ( None ) {
182+ panic ! ( "main: Failed to initialize logging subsystem: {:?}" , e) ;
183+ }
184+ }
185+
161186 // configure virtual machine from command line
162187 if cmd_arguments. is_present ( "vcpu_count" ) {
163188 match cmd_arguments
0 commit comments