diff options
-rw-r--r-- | adb.cpp | 45 | ||||
-rw-r--r-- | adb_trace.h | 6 | ||||
-rw-r--r-- | client/main.cpp | 4 | ||||
-rw-r--r-- | daemon/main.cpp | 4 |
4 files changed, 38 insertions, 21 deletions
@@ -34,6 +34,7 @@ #include <vector> #include <unordered_map> +#include <base/logging.h> #include <base/stringprintf.h> #include <base/strings.h> @@ -50,16 +51,25 @@ #include <sys/mount.h> #endif -ADB_MUTEX_DEFINE( D_lock ); +ADB_MUTEX_DEFINE(D_lock); int HOST = 0; #if !ADB_HOST -const char *adb_device_banner = "device"; +const char* adb_device_banner = "device"; +static android::base::LogdLogger gLogdLogger; #endif -void fatal(const char *fmt, ...) -{ +void AdbLogger(android::base::LogId id, android::base::LogSeverity severity, + const char* tag, const char* file, unsigned int line, + const char* message) { + android::base::StderrLogger(id, severity, tag, file, line, message); +#if !ADB_HOST + gLogdLogger(id, severity, tag, file, line, message); +#endif +} + +void fatal(const char *fmt, ...) { va_list ap; va_start(ap, fmt); fprintf(stderr, "error: "); @@ -69,8 +79,7 @@ void fatal(const char *fmt, ...) exit(-1); } -void fatal_errno(const char *fmt, ...) -{ +void fatal_errno(const char* fmt, ...) { va_list ap; va_start(ap, fmt); fprintf(stderr, "error: %s: ", strerror(errno)); @@ -81,7 +90,7 @@ void fatal_errno(const char *fmt, ...) } #if !ADB_HOST -void start_device_log(void) { +static std::string get_log_file_name() { struct tm now; time_t t; tzset(); @@ -91,13 +100,18 @@ void start_device_log(void) { char timestamp[PATH_MAX]; strftime(timestamp, sizeof(timestamp), "%Y-%m-%d-%H-%M-%S", &now); - std::string path = android::base::StringPrintf("/data/adb/adb-%s-%d", timestamp, getpid()); - int fd = unix_open(path.c_str(), O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC, 0640); + return android::base::StringPrintf("/data/adb/adb-%s-%d", timestamp, + getpid()); +} + +void start_device_log(void) { + int fd = unix_open(get_log_file_name().c_str(), + O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC, 0640); if (fd == -1) { return; } - // redirect stdout and stderr to the log file + // Redirect stdout and stderr to the log file. dup2(fd, STDOUT_FILENO); dup2(fd, STDERR_FILENO); fprintf(stderr, "--- adb starting (pid %d) ---\n", getpid()); @@ -138,7 +152,7 @@ std::string get_trace_setting() { // // adb's trace setting comes from the ADB_TRACE environment variable, whereas // adbd's comes from the system property persist.adb.trace_mask. -void adb_trace_init() { +static void setup_trace_mask() { const std::string trace_setting = get_trace_setting(); std::unordered_map<std::string, int> trace_flags = { @@ -173,10 +187,17 @@ void adb_trace_init() { adb_trace_mask |= 1 << flag->second; } } +} +void adb_trace_init(char** argv) { #if !ADB_HOST - start_device_log(); + if (isatty(STDOUT_FILENO) == 0) { + start_device_log(); + } #endif + + setup_trace_mask(); + android::base::InitLogging(argv, AdbLogger); } apacket* get_apacket(void) diff --git a/adb_trace.h b/adb_trace.h index 63d4151..dbc7ec8 100644 --- a/adb_trace.h +++ b/adb_trace.h @@ -57,9 +57,9 @@ void adb_qemu_trace(const char* fmt, ...); #define DQ(...) ((void)0) #endif /* !ADB_HOST */ -extern int adb_trace_mask; -extern unsigned char adb_trace_output_count; -void adb_trace_init(void); +extern int adb_trace_mask; +extern unsigned char adb_trace_output_count; +void adb_trace_init(char**); # define ADB_TRACING ((adb_trace_mask & (1 << TRACE_TAG)) != 0) diff --git a/client/main.cpp b/client/main.cpp index f48182d..0cd6670 100644 --- a/client/main.cpp +++ b/client/main.cpp @@ -176,9 +176,7 @@ int adb_main(int is_daemon, int server_port) { int main(int argc, char** argv) { adb_sysdeps_init(); - - android::base::InitLogging(argv); - adb_trace_init(); + adb_trace_init(argv); D("Handling commandline()\n"); return adb_commandline(argc - 1, const_cast<const char**>(argv + 1)); } diff --git a/daemon/main.cpp b/daemon/main.cpp index 99ff539..c0612cd 100644 --- a/daemon/main.cpp +++ b/daemon/main.cpp @@ -230,8 +230,6 @@ static void close_stdin() { } int main(int argc, char** argv) { - android::base::InitLogging(argv); - while (true) { static struct option opts[] = { {"root_seclabel", required_argument, nullptr, 's'}, @@ -265,7 +263,7 @@ int main(int argc, char** argv) { close_stdin(); - adb_trace_init(); + adb_trace_init(argv); /* If adbd runs inside the emulator this will enable adb tracing via * adb-debug qemud service in the emulator. */ |