Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(457)

Side by Side Diff: common/event_logger.h

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « common/controlled_object.h ('k') | common/event_logger.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2007-2009 Google Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 // ========================================================================
15 //
16 // Event Logger provides a simple mechanism to log events to Windows
17 // Event Log. A few overloads are defined to simplify logging by reducing
18 // the number of parameters that must be provided. The overloads are
19 // implemented in terms of the EventLogger class.
20 //
21 // The event logging works in both debug and optimized builds. This is not
22 // a substitute for the debug log. Instead it is a way to provide some level
23 // of transparency into what Google Update is doing at runtime and to help
24 // diagnosing end user issues.
25 //
26 // Familiarity with Windows Event Log is helpful in understanding how
27 // these wrappers are to be used. Windows Event Log uses localized strings
28 // in a message file and it substitutes string insterts that correspond to
29 // formatting characters in the message string. In addtion, the log is able
30 // to record raw data, herein provided by a context string, which may be
31 // useful to provide some context around the formatted message.
32
33 // TODO(omaha): Provide some control for the verbosity level in the log.
34 // TODO(omaha): Perhaps there is a better way to define the overloaded
35 // wrappers below. I chose a compromise between the easy of use while not
36 // mixing up different string parameters that have different meanings.
37
38 #ifndef OMAHA_COMMON_EVENT_LOGGER_H_
39 #define OMAHA_COMMON_EVENT_LOGGER_H_
40
41 #include <atlstr.h>
42 #include "base/basictypes.h"
43
44 namespace omaha {
45
46 void LogEventHelper(WORD type, DWORD id, size_t count, const TCHAR** strings,
47 const TCHAR* ctx);
48
49 // Logs an event to the Application log
50 inline void LogEvent(WORD type, DWORD id) {
51 LogEventHelper(type, id, 0, NULL, NULL);
52 }
53
54 inline void LogEvent(WORD type, DWORD id, const TCHAR* s) {
55 const TCHAR* strings[] = {s};
56 LogEventHelper(type, id, arraysize(strings), strings, NULL);
57 }
58
59 inline void LogEvent(WORD type, DWORD id, const TCHAR* s1, const TCHAR* s2) {
60 const TCHAR* strings[] = {s1, s2};
61 LogEventHelper(type, id, arraysize(strings), strings, NULL);
62 }
63
64 inline void LogEvent(WORD type, DWORD id, const TCHAR* s1, const TCHAR* s2,
65 const TCHAR* s3) {
66 const TCHAR* strings[] = {s1, s2, s3};
67 LogEventHelper(type, id, arraysize(strings), strings, NULL);
68 }
69
70 // Logs an event to the Application log with a context string.
71 inline void LogEventContext(WORD type, DWORD id, const TCHAR* ctx) {
72 LogEventHelper(type, id, 0, NULL, ctx);
73 }
74
75 inline void LogEventContext(WORD type, DWORD id, const TCHAR* s,
76 const TCHAR* ctx) {
77 const TCHAR* strings[] = {s};
78 LogEventHelper(type, id, arraysize(strings), strings, ctx);
79 }
80
81 inline void LogEventContext(WORD type, DWORD id, const TCHAR* s1,
82 const TCHAR* s2, const TCHAR* ctx) {
83 const TCHAR* strings[] = {s1, s2};
84 LogEventHelper(type, id, arraysize(strings), strings, ctx);
85 }
86
87 inline void LogEventContext(WORD type, DWORD id, const TCHAR* s1,
88 const TCHAR* s2, const TCHAR* s3,
89 const TCHAR* ctx) {
90 const TCHAR* strings[] = {s1, s2, s3};
91 LogEventHelper(type, id, arraysize(strings), strings, ctx);
92 }
93
94 class EventLogger {
95 public:
96 // Creates an event source for the "Application" log so that EventViewer can
97 // map event identifier codes to message strings.
98 static HRESULT AddEventSource(
99 const TCHAR* src_name, // Event source name.
100 const TCHAR* msg_dll_path); // Path for message DLL.
101
102 static HRESULT RemoveEventSource(
103 const TCHAR* src_name); // Event source name.
104
105 // Writes an entry at the end of event log that contains the source name.
106 static HRESULT ReportEvent(
107 const TCHAR* src_name, // Event source name.
108 WORD type, // Type of the event to be logged.
109 WORD category, // Event category.
110 DWORD id, // Event identifier.
111 WORD count, // Count of insert strings.
112 const TCHAR** strings, // Insert strings.
113 size_t buf_size, // Size of binary data to append.
114 void* buffer); // Buffer containing the binary data.
115
116 // Reads the topmost event log record.
117 static HRESULT ReadLastEvent(const TCHAR* src_name, EVENTLOGRECORD* rec);
118
119 // Default name for the event source.
120 static const TCHAR* const kSourceName;
121
122 // Default event category.
123 static const WORD kDefaultCategory = 0;
124 };
125
126 class GoogleUpdateLogEvent {
127 public:
128 GoogleUpdateLogEvent(int type, int id, bool is_machine)
129 : type_(type),
130 id_(id),
131 is_machine_(is_machine) {}
132 GoogleUpdateLogEvent() : type_(0), id_(0), is_machine_(false) {}
133 ~GoogleUpdateLogEvent() {}
134 void WriteEvent();
135 void set_event_desc(const CString& desc) { event_desc_ = desc; }
136 void set_event_text(const CString& text) { event_text_ = text; }
137
138 private:
139 CString event_desc_;
140 CString event_text_;
141 int type_;
142 int id_;
143 bool is_machine_;
144
145 DISALLOW_EVIL_CONSTRUCTORS(GoogleUpdateLogEvent);
146 };
147
148 } // namespace omaha
149
150 #endif // OMAHA_COMMON_EVENT_LOGGER_H_
151
OLDNEW
« no previous file with comments | « common/controlled_object.h ('k') | common/event_logger.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698