| Index: chrome/test/webdriver/webdriver_logging.cc
|
| diff --git a/chrome/test/webdriver/webdriver_logging.cc b/chrome/test/webdriver/webdriver_logging.cc
|
| deleted file mode 100644
|
| index fb482f511f5d319c4d3d237e37ba7877b90e244b..0000000000000000000000000000000000000000
|
| --- a/chrome/test/webdriver/webdriver_logging.cc
|
| +++ /dev/null
|
| @@ -1,254 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/test/webdriver/webdriver_logging.h"
|
| -
|
| -#include <cmath>
|
| -
|
| -#include "base/file_util.h"
|
| -#include "base/files/file_path.h"
|
| -#include "base/logging.h"
|
| -#include "base/strings/string_number_conversions.h"
|
| -#include "base/strings/string_util.h"
|
| -#include "base/strings/stringprintf.h"
|
| -#include "base/time/time.h"
|
| -#include "build/build_config.h"
|
| -
|
| -using base::DictionaryValue;
|
| -using base::ListValue;
|
| -using base::Value;
|
| -
|
| -namespace webdriver {
|
| -
|
| -FileLog* FileLog::singleton_ = NULL;
|
| -
|
| -double start_time = 0;
|
| -
|
| -LogLevel LogLevelFromString(const std::string& name) {
|
| - // Default logging level is INFO.
|
| - LogLevel level = kInfoLogLevel;
|
| - const std::string upper_case_name = StringToUpperASCII(name);
|
| - if (upper_case_name == "OFF") {
|
| - level = kOffLogLevel;
|
| - } else if (upper_case_name == "SEVERE") {
|
| - level = kSevereLogLevel;
|
| - } else if (upper_case_name == "WARNING") {
|
| - level = kWarningLogLevel;
|
| - } else if (upper_case_name == "INFO" || upper_case_name == "CONFIG") {
|
| -
|
| - } else if (upper_case_name == "FINE") {
|
| - level = kFineLogLevel;
|
| - } else if (upper_case_name == "FINER") {
|
| - level = kFinerLogLevel;
|
| - } else if (upper_case_name == "ALL" || upper_case_name == "FINEST") {
|
| - level = kAllLogLevel;
|
| - }
|
| - return level;
|
| -}
|
| -
|
| -// static
|
| -bool LogType::FromString(const std::string& name, LogType* log_type) {
|
| - if (name == "driver") {
|
| - *log_type = LogType(kDriver);
|
| - } else {
|
| - return false;
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -LogType::LogType() : type_(kInvalid) { }
|
| -
|
| -LogType::LogType(Type type) : type_(type) { }
|
| -
|
| -LogType::~LogType() { }
|
| -
|
| -std::string LogType::ToString() const {
|
| - switch (type_) {
|
| - case kDriver:
|
| - return "driver";
|
| - default:
|
| - return "unknown";
|
| - };
|
| -}
|
| -
|
| -LogType::Type LogType::type() const {
|
| - return type_;
|
| -}
|
| -
|
| -LogHandler::LogHandler() { }
|
| -
|
| -LogHandler::~LogHandler() { }
|
| -
|
| -// static
|
| -void FileLog::SetGlobalLog(FileLog* log) {
|
| - singleton_ = log;
|
| -}
|
| -
|
| -// static
|
| -FileLog* FileLog::Get() {
|
| - return singleton_;
|
| -}
|
| -
|
| -// static
|
| -FileLog* FileLog::CreateFileLog(const base::FilePath::StringType& log_name,
|
| - LogLevel level) {
|
| - base::FilePath log_path(log_name);
|
| - file_util::ScopedFILE file(file_util::OpenFile(log_path, "w"));
|
| - base::FilePath temp_dir;
|
| - if (!file.get() && file_util::GetTempDir(&temp_dir))
|
| - log_path = temp_dir.Append(log_name);
|
| - file.reset();
|
| - return new FileLog(log_path, level);
|
| -}
|
| -
|
| -FileLog::FileLog(const base::FilePath& path, LogLevel level)
|
| - : path_(path),
|
| - min_log_level_(level) {
|
| - if (!path_.IsAbsolute()) {
|
| - base::FilePath cwd;
|
| - if (file_util::GetCurrentDirectory(&cwd))
|
| - path_ = cwd.Append(path_);
|
| - }
|
| - file_.reset(file_util::OpenFile(path_, "w"));
|
| -}
|
| -
|
| -FileLog::~FileLog() { }
|
| -
|
| -void FileLog::Log(LogLevel level, const base::Time& time,
|
| - const std::string& message) {
|
| - if (!file_.get() || level < min_log_level_)
|
| - return;
|
| -
|
| - const char* level_name = "UNKNOWN";
|
| - switch (level) {
|
| - case kOffLogLevel:
|
| - level_name = "OFF";
|
| - break;
|
| - case kSevereLogLevel:
|
| - level_name = "SEVERE";
|
| - break;
|
| - case kWarningLogLevel:
|
| - level_name = "WARNING";
|
| - break;
|
| - case kInfoLogLevel:
|
| - level_name = "INFO";
|
| - break;
|
| - case kFineLogLevel:
|
| - level_name = "FINE";
|
| - break;
|
| - case kFinerLogLevel:
|
| - level_name = "FINER";
|
| - break;
|
| - default:
|
| - break;
|
| - }
|
| - base::TimeDelta delta(time - base::Time::FromDoubleT(start_time));
|
| - std::string entry = base::StringPrintf(
|
| - "[%.3lf][%s]:", delta.InSecondsF(), level_name);
|
| -
|
| - int pad_length = 20 - entry.length();
|
| - if (pad_length < 1)
|
| - pad_length = 1;
|
| - std::string padding(pad_length, ' ');
|
| - entry += padding + message;
|
| -#if defined(OS_WIN)
|
| - entry += "\r\n";
|
| -#else
|
| - entry += "\n";
|
| -#endif
|
| -
|
| - base::AutoLock auto_lock(lock_);
|
| - fprintf(file_.get(), "%s", entry.c_str());
|
| - fflush(file_.get());
|
| -}
|
| -
|
| -bool FileLog::GetLogContents(std::string* contents) const {
|
| - if (!file_.get())
|
| - return false;
|
| - return base::ReadFileToString(path_, contents);
|
| -}
|
| -
|
| -bool FileLog::IsOpen() const {
|
| - return !!file_.get();
|
| -}
|
| -
|
| -void FileLog::set_min_log_level(LogLevel level) {
|
| - min_log_level_ = level;
|
| -}
|
| -
|
| -const base::FilePath& FileLog::path() const {
|
| - return path_;
|
| -}
|
| -
|
| -InMemoryLog::InMemoryLog() { }
|
| -
|
| -InMemoryLog::~InMemoryLog() { }
|
| -
|
| -void InMemoryLog::Log(LogLevel level, const base::Time& time,
|
| - const std::string& message) {
|
| - base::TimeDelta delta = time - base::Time::UnixEpoch();
|
| - DictionaryValue* entry = new DictionaryValue();
|
| - entry->SetInteger("level", level);
|
| - entry->SetDouble("timestamp", std::floor(delta.InMillisecondsF()));
|
| - entry->SetString("message", message);
|
| - base::AutoLock auto_lock(entries_lock_);
|
| - entries_list_.Append(entry);
|
| -}
|
| -
|
| -const ListValue* InMemoryLog::entries_list() const {
|
| - return &entries_list_;
|
| -}
|
| -
|
| -Logger::Logger() : min_log_level_(kAllLogLevel) { }
|
| -
|
| -Logger::Logger(LogLevel level) : min_log_level_(level) { }
|
| -
|
| -Logger::~Logger() { }
|
| -
|
| -void Logger::Log(LogLevel level, const std::string& message) const {
|
| - if (level < min_log_level_)
|
| - return;
|
| -
|
| - base::Time time = base::Time::Now();
|
| - for (size_t i = 0; i < handlers_.size(); ++i) {
|
| - handlers_[i]->Log(level, time, message);
|
| - }
|
| -}
|
| -
|
| -void Logger::AddHandler(LogHandler* log_handler) {
|
| - handlers_.push_back(log_handler);
|
| -}
|
| -
|
| -void Logger::set_min_log_level(LogLevel level) {
|
| - min_log_level_ = level;
|
| -}
|
| -
|
| -bool InitWebDriverLogging(const base::FilePath& log_path,
|
| - LogLevel min_log_level) {
|
| - start_time = base::Time::Now().ToDoubleT();
|
| - // Turn off base/logging.
|
| - logging::LoggingSettings settings;
|
| - settings.logging_dest = logging::LOG_NONE;
|
| - bool success = logging::InitLogging(settings);
|
| - if (!success) {
|
| - PLOG(ERROR) << "Unable to initialize logging";
|
| - }
|
| - logging::SetLogItems(false, // enable_process_id
|
| - false, // enable_thread_id
|
| - true, // enable_timestamp
|
| - false); // enable_tickcount
|
| -
|
| - // Init global file log.
|
| - FileLog* log;
|
| - if (log_path.empty()) {
|
| - log = FileLog::CreateFileLog(FILE_PATH_LITERAL("chromedriver.log"),
|
| - min_log_level);
|
| - } else {
|
| - log = new FileLog(log_path, min_log_level);
|
| - }
|
| - FileLog::SetGlobalLog(log);
|
| - return log->IsOpen();
|
| -}
|
| -
|
| -} // namespace webdriver
|
|
|