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

Unified Diff: chrome/common/logging_chrome.cc

Issue 4194005: This moves log output for ChromeOS to safer locations. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: upload after sync Created 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/common/logging_chrome.cc
diff --git a/chrome/common/logging_chrome.cc b/chrome/common/logging_chrome.cc
index 6106e43d7d25186bacae317ba72373b03241fdec..48bcc37a973e9519efd36feecb87b0b5e809ba8d 100644
--- a/chrome/common/logging_chrome.cc
+++ b/chrome/common/logging_chrome.cc
@@ -158,12 +158,13 @@ FilePath SetUpSymlinkIfNeeded(const FilePath& symlink_path, bool new_log) {
// starting a new log, then delete the old symlink and make a new
// one to a fresh log file.
FilePath target_path;
- if (new_log || !file_util::PathExists(symlink_path)) {
+ bool symlink_exists = file_util::PathExists(symlink_path);
+ if (new_log || !symlink_exists) {
target_path = GenerateTimestampedName(symlink_path, base::Time::Now());
// We don't care if the unlink fails; we're going to continue anyway.
if (unlink(symlink_path.value().c_str()) == -1) {
- if (new_log) // only warn if we might expect it to succeed.
+ if (symlink_exists) // only warn if we might expect it to succeed.
PLOG(WARNING) << "Unable to unlink " << symlink_path.value();
}
if (symlink(target_path.value().c_str(),
@@ -193,12 +194,29 @@ void RemoveSymlinkAndLog(const FilePath& link_path,
} // anonymous namespace
-void RedirectChromeLogging(const FilePath& new_log_dir,
- const CommandLine& command_line) {
+FilePath GetSessionLogFile(const CommandLine& command_line) {
+ FilePath log_dir;
+ std::string log_dir_str;
+ scoped_ptr<base::Environment> env(base::Environment::Create());
+ if (env->GetVar(env_vars::kSessionLogDir, &log_dir_str) &&
+ !log_dir_str.empty()) {
+ log_dir = FilePath(log_dir_str);
+ } else {
+ PathService::Get(chrome::DIR_USER_DATA, &log_dir);
+ FilePath login_profile =
+ command_line.GetSwitchValuePath(switches::kLoginProfile);
+ log_dir = log_dir.Append(login_profile);
+ }
+ return log_dir.Append(GetLogFileName().BaseName());
+}
+
+void RedirectChromeLogging(const CommandLine& command_line) {
DCHECK(!chrome_logging_redirected_) <<
"Attempted to redirect logging when it was already initialized.";
- FilePath orig_log_path = GetLogFileName();
- FilePath log_path = new_log_dir.Append(orig_log_path.BaseName());
+
+ // Redirect logs to the session log directory, if set. Otherwise
+ // defaults to the profile dir.
+ FilePath log_path = GetSessionLogFile(command_line);
// Always force a new symlink when redirecting.
FilePath target_path = SetUpSymlinkIfNeeded(log_path, true);
@@ -215,6 +233,8 @@ void RedirectChromeLogging(const FilePath& new_log_dir,
chrome_logging_redirected_ = true;
}
}
+
+
#endif
void InitChromeLogging(const CommandLine& command_line,
@@ -229,6 +249,12 @@ void InitChromeLogging(const CommandLine& command_line,
FilePath log_path = GetLogFileName();
#if defined(OS_CHROMEOS)
+ // For BWSI (Incognito) logins, we want to put the logs in the user
+ // profile directory that is created for the temporary session instead
+ // of in the system log directory, for privacy reasons.
+ if (command_line.HasSwitch(switches::kGuestSession))
+ log_path = GetSessionLogFile(command_line);
+
// On ChromeOS we log to the symlink. We force creation of a new
// symlink if we've been asked to delete the old log, since that
// indicates the start of a new session.

Powered by Google App Engine
This is Rietveld 408576698