Commit fe476002 authored by proberge's avatar proberge Committed by Commit Bot

Move eventlog_provider from //base/win to //chrome/common/win.

This removes a //chrome dependency in base (process_version_rc_template),
allowing //base to be used by targets that do not have access to //chrome.

BUG=642115
TEST=eventlog_provider.dll is installed and SYSLOG works.

Review-Url: https://codereview.chromium.org/2946983002
Cr-Commit-Position: refs/heads/master@{#481878}
parent e545f646
...@@ -723,7 +723,7 @@ group("chromium_builder_tests") { ...@@ -723,7 +723,7 @@ group("chromium_builder_tests") {
if (is_win) { if (is_win) {
group("chrome_official_builder_no_unittests") { group("chrome_official_builder_no_unittests") {
deps = [ deps = [
"//base/win:eventlog_provider", "//chrome/common/win:eventlog_provider",
"//chrome/installer/gcapi", "//chrome/installer/gcapi",
"//chrome/installer/mini_installer", "//chrome/installer/mini_installer",
"//cloud_print", "//cloud_print",
......
...@@ -1412,7 +1412,6 @@ component("base") { ...@@ -1412,7 +1412,6 @@ component("base") {
deps += [ deps += [
"//base/trace_event/etw_manifest:chrome_events_win", "//base/trace_event/etw_manifest:chrome_events_win",
"//base/win:base_win_features", "//base/win:base_win_features",
"//base/win:eventlog_messages",
] ]
if (is_component_build) { if (is_component_build) {
......
...@@ -2,15 +2,12 @@ ...@@ -2,15 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "base/debug/stack_trace.h"
#include "base/syslog_logging.h" #include "base/syslog_logging.h"
#if defined(OS_WIN) #if defined(OS_WIN)
#include "base/bind.h" #include "base/bind.h"
#include "base/callback_helpers.h" #include "base/callback_helpers.h"
#include "base/win/eventlog_messages.h" #include "base/debug/stack_trace.h"
#include <windows.h>
#elif defined(OS_LINUX) #elif defined(OS_LINUX)
// <syslog.h> defines a LOG_WARNING macro that could conflict with // <syslog.h> defines a LOG_WARNING macro that could conflict with
// base::LOG_WARNING. // base::LOG_WARNING.
...@@ -18,7 +15,6 @@ ...@@ -18,7 +15,6 @@
#undef LOG_WARNING #undef LOG_WARNING
#endif #endif
#include <cstring>
#include <ostream> #include <ostream>
#include <string> #include <string>
...@@ -27,13 +23,22 @@ namespace logging { ...@@ -27,13 +23,22 @@ namespace logging {
#if defined(OS_WIN) #if defined(OS_WIN)
namespace { namespace {
std::string* g_event_source_name = nullptr; std::string* g_event_source_name = nullptr;
} uint16_t g_category = 0;
uint32_t g_event_id = 0;
} // namespace
void SetEventSourceName(const std::string& name) { void SetEventSource(const std::string& name,
uint16_t category,
uint32_t event_id) {
DCHECK_EQ(nullptr, g_event_source_name); DCHECK_EQ(nullptr, g_event_source_name);
g_event_source_name = new std::string(name); g_event_source_name = new std::string(name);
g_category = category;
g_event_id = event_id;
} }
#endif // defined(OS_WIN) #endif // defined(OS_WIN)
EventLogMessage::EventLogMessage(const char* file, EventLogMessage::EventLogMessage(const char* file,
...@@ -51,8 +56,8 @@ EventLogMessage::~EventLogMessage() { ...@@ -51,8 +56,8 @@ EventLogMessage::~EventLogMessage() {
return; return;
HANDLE event_log_handle = HANDLE event_log_handle =
RegisterEventSourceA(NULL, g_event_source_name->c_str()); RegisterEventSourceA(nullptr, g_event_source_name->c_str());
if (event_log_handle == NULL) { if (event_log_handle == nullptr) {
stream() << " !!NOT ADDED TO EVENTLOG!!"; stream() << " !!NOT ADDED TO EVENTLOG!!";
return; return;
} }
...@@ -78,8 +83,8 @@ EventLogMessage::~EventLogMessage() { ...@@ -78,8 +83,8 @@ EventLogMessage::~EventLogMessage() {
break; break;
} }
LPCSTR strings[1] = {message.data()}; LPCSTR strings[1] = {message.data()};
if (!ReportEventA(event_log_handle, log_type, BROWSER_CATEGORY, if (!ReportEventA(event_log_handle, log_type, g_category, g_event_id, nullptr,
MSG_LOG_MESSAGE, NULL, 1, 0, strings, NULL)) { 1, 0, strings, nullptr)) {
stream() << " !!NOT ADDED TO EVENTLOG!!"; stream() << " !!NOT ADDED TO EVENTLOG!!";
} }
#elif defined(OS_LINUX) #elif defined(OS_LINUX)
......
...@@ -5,7 +5,10 @@ ...@@ -5,7 +5,10 @@
#ifndef BASE_SYSLOG_LOGGING_H_ #ifndef BASE_SYSLOG_LOGGING_H_
#define BASE_SYSLOG_LOGGING_H_ #define BASE_SYSLOG_LOGGING_H_
#include <iosfwd>
#include "base/logging.h" #include "base/logging.h"
#include "build/build_config.h"
namespace logging { namespace logging {
...@@ -17,10 +20,14 @@ namespace logging { ...@@ -17,10 +20,14 @@ namespace logging {
#define SYSLOG(severity) \ #define SYSLOG(severity) \
SYSLOG_STREAM(severity) SYSLOG_STREAM(severity)
// Sets the name of the event source for logging to the Windows Event Log. #if defined(OS_WIN)
// Call this function once before using the SYSLOG macro or otherwise it will // Sets the name, category and event id of the event source for logging to the
// behave as a regular LOG macro. // Windows Event Log. Call this function once before using the SYSLOG macro or
void BASE_EXPORT SetEventSourceName(const std::string& name); // otherwise it will behave as a regular LOG macro.
void BASE_EXPORT SetEventSource(const std::string& name,
uint16_t category,
uint32_t event_id);
#endif // defined(OS_WIN)
// Creates a formatted message on the system event log. That would be the // Creates a formatted message on the system event log. That would be the
// Application Event log on Windows and the messages log file on POSIX systems. // Application Event log on Windows and the messages log file on POSIX systems.
......
...@@ -3,9 +3,6 @@ ...@@ -3,9 +3,6 @@
# found in the LICENSE file. # found in the LICENSE file.
import("//build/buildflag_header.gni") import("//build/buildflag_header.gni")
import("//build/config/sanitizers/sanitizers.gni")
import("//build/win/message_compiler.gni")
import("//chrome/process_version_rc_template.gni")
declare_args() { declare_args() {
# Indicates if the handle verifier should operate in a single module mode. By # Indicates if the handle verifier should operate in a single module mode. By
...@@ -25,43 +22,6 @@ buildflag_header("base_win_features") { ...@@ -25,43 +22,6 @@ buildflag_header("base_win_features") {
flags = [ "SINGLE_MODULE_MODE_HANDLE_VERIFIER=$single_module_mode_handle_verifier" ] flags = [ "SINGLE_MODULE_MODE_HANDLE_VERIFIER=$single_module_mode_handle_verifier" ]
} }
message_compiler("eventlog_messages") {
visibility = [
"//base:base",
":eventlog_provider",
]
sources = [
"eventlog_messages.mc",
]
user_mode_logging = false
compile_generated_code = false
}
process_version_rc_template("eventlog_provider_dll_version") {
sources = [
"eventlog_provider.ver",
]
output = "$target_gen_dir/eventlog_provider_dll_version.rc"
}
shared_library("eventlog_provider") {
sources = [
"$root_gen_dir/base/win/eventlog_messages.rc",
"eventlog_provider.cc",
]
if (!is_asan) {
ldflags = [ "/NOENTRY" ]
}
deps = [
"//base/win:eventlog_messages",
"//base/win:eventlog_provider_dll_version",
]
}
static_library("pe_image") { static_library("pe_image") {
sources = [ sources = [
"pe_image.cc", "pe_image.cc",
......
...@@ -443,6 +443,10 @@ static_library("common") { ...@@ -443,6 +443,10 @@ static_library("common") {
} }
if (is_win) { if (is_win) {
deps = [
"//chrome/common/win:eventlog_messages",
]
public_deps += [ public_deps += [
"//components/dom_distiller/core", # Needed by chrome_content_client.cc. "//components/dom_distiller/core", # Needed by chrome_content_client.cc.
"//third_party/wtl", "//third_party/wtl",
......
...@@ -62,6 +62,7 @@ ...@@ -62,6 +62,7 @@
#include <initguid.h> #include <initguid.h>
#include "base/logging_win.h" #include "base/logging_win.h"
#include "base/syslog_logging.h" #include "base/syslog_logging.h"
#include "chrome/common/win/eventlog_messages.h"
#include "chrome/install_static/install_details.h" #include "chrome/install_static/install_details.h"
#endif #endif
...@@ -332,8 +333,9 @@ void InitChromeLogging(const base::CommandLine& command_line, ...@@ -332,8 +333,9 @@ void InitChromeLogging(const base::CommandLine& command_line,
LogEventProvider::Initialize(kChromeTraceProviderName); LogEventProvider::Initialize(kChromeTraceProviderName);
// Enable logging to the Windows Event Log. // Enable logging to the Windows Event Log.
SetEventSourceName(base::UTF16ToASCII( SetEventSource(base::UTF16ToASCII(
install_static::InstallDetails::Get().install_full_name())); install_static::InstallDetails::Get().install_full_name()),
BROWSER_CATEGORY, MSG_LOG_MESSAGE);
#endif #endif
base::StatisticsRecorder::InitLogOnShutdown(); base::StatisticsRecorder::InitLogOnShutdown();
......
# Copyright 2017 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.
import("//build/config/sanitizers/sanitizers.gni")
import("//build/win/message_compiler.gni")
import("//chrome/process_version_rc_template.gni")
message_compiler("eventlog_messages") {
visibility = [
"//chrome/common:common",
":eventlog_provider",
]
sources = [
"eventlog_messages.mc",
]
user_mode_logging = false
compile_generated_code = false
}
process_version_rc_template("eventlog_provider_dll_version") {
sources = [
"eventlog_provider.ver",
]
output = "$target_gen_dir/eventlog_provider_dll_version.rc"
}
shared_library("eventlog_provider") {
sources = [
"$root_gen_dir/chrome/common/win/eventlog_messages.rc",
"eventlog_provider.cc",
]
if (!is_asan) {
ldflags = [ "/NOENTRY" ]
}
deps = [
":eventlog_messages",
":eventlog_provider_dll_version",
]
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment