11#include < plog/Appenders/ConsoleAppender.h>
2+ #include < plog/Appenders/RollingFileAppender.h>
23#include < plog/Formatters/TxtFormatter.h>
34#include < plog/Initializers/ConsoleInitializer.h>
45#include < plog/Log.h>
@@ -52,15 +53,6 @@ int main(int argc, char* argv[]) {
5253 std::signal (SIGINT, handle_sigint);
5354 std::signal (SIGTERM, handle_sigint);
5455
55- // initialize logging
56- static plog::ColorConsoleAppender<dbus2http::FileLineFormatter>
57- consoleAppender;
58- #ifdef NDEBUG
59- plog::init (plog::info, &consoleAppender);
60- #else
61- plog::init (plog::debug, &consoleAppender);
62- #endif
63-
6456 // parse arguments
6557 argparse::ArgumentParser program (" dbus2http" , VERSION_BUILD_NUMBER);
6658 program.add_description (" A D-Bus to HTTP proxy server." );
@@ -81,8 +73,25 @@ int main(int argc, char* argv[]) {
8173 program.add_argument (" --service_prefix" )
8274 .nargs (argparse::nargs_pattern::at_least_one)
8375 .help (" Only expose services with the given prefix" );
76+ program.add_argument (" -v" , " --verbose" )
77+ .help (" print debug log" )
78+ .default_value (false )
79+ .implicit_value (true );
80+
81+ static plog::ColorConsoleAppender<dbus2http::FileLineFormatter<false , false >>
82+ consoleAppender;
83+ static plog::RollingFileAppender<dbus2http::FileLineFormatter<true , true >> fileAppender (" /var/log/dbus2http/dbus2http.log" , 10000000 , 5 );
84+
8485 try {
8586 program.parse_args (argc, argv);
87+ #ifdef NDEBUG
88+ if (program.get <bool >(" --verbose" ))
89+ plog::init (plog::debug, &consoleAppender).addAppender (&fileAppender);
90+ else
91+ plog::init (plog::info, &consoleAppender).addAppender (&fileAppender);
92+ #else
93+ plog::init (plog::debug, &consoleAppender);
94+ #endif
8695 } catch (const std::exception& e) {
8796 PLOGE << " argument parsing error: " << e.what () << std::endl << program;
8897 return 1 ;
@@ -118,15 +127,23 @@ int main(int argc, char* argv[]) {
118127 // launch dbus2http proxy
119128 PLOGI << " Starting dbus2http..." ;
120129 dbus2http::Dbus2Http dbus2http (service_prefix, program.get <bool >(" --system" ));
121- dbus2http.start (program.get <int >(" --port" ), program.get <int >(" --websocket_port" ));
130+ dbus2http.start (program.get <int >(" --port" ),
131+ program.get <int >(" --websocket_port" ),
132+ [] { g_running.store (false ); });
122133
123134 dbus2http::SignalSocket signal_socket (dbus2http.getContext (),
124135 program.get <bool >(" --system" ),
125136 program.get <int >(" --websocket_port" ));
126137 signal_socket.start ();
127138
139+ std::this_thread::sleep_for (std::chrono::milliseconds (1000 ));
140+ PLOGI << " dbus2http started on port " << program.get <int >(" --port" ) << " ..." ;
141+
142+ int i = 0 ;
128143 while (g_running.load ()) {
129- std::this_thread::sleep_for (std::chrono::milliseconds (200 ));
144+ std::this_thread::sleep_for (std::chrono::milliseconds (1000 ));
145+ if (i++ % 10 == 0 )
146+ PLOGD << " dbus2http keep running..." ;
130147 }
131148
132149 PLOGI << " Stopping signal socket..." ;
0 commit comments