logging_installer.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_INSTALLER_UTIL_LOGGING_INSTALLER_H_ 6#define CHROME_INSTALLER_UTIL_LOGGING_INSTALLER_H_ 7 8#include "base/basictypes.h" 9 10namespace base { 11class FilePath; 12} 13 14namespace installer { 15 16class MasterPreferences; 17 18// Verbose installer runs clock in at around 50K, non-verbose much less than 19// that. Some installer operations span multiple setup.exe runs, so we try 20// to keep enough for at least 10 runs or so at any given time. 21const int kMaxInstallerLogFileSize = 1024 * 1024; 22 23// Truncate the file down to half of the max, such that we don't incur 24// truncation on every update. 25const int kTruncatedInstallerLogFileSize = kMaxInstallerLogFileSize / 2; 26 27COMPILE_ASSERT(kTruncatedInstallerLogFileSize < kMaxInstallerLogFileSize, 28 kTruncatedInstallerLogFileSize_not_lt_kMaxInstallerLogFileSize); 29 30enum TruncateResult { 31 LOGFILE_UNTOUCHED, 32 LOGFILE_TRUNCATED, 33 LOGFILE_DELETED, 34}; 35 36// Cuts off the _beginning_ of the file at |log_file| down to 37// kTruncatedInstallerLogFileSize if it exceeds kMaxInstallerLogFileSize bytes. 38// 39// If the file is not changed, returns LOGFILE_UNTOUCHED. 40// If the file is successfully truncated, returns LOGFILE_TRUNCATED. 41// If the file needed truncation, but the truncation failed, the file will be 42// deleted and the function returns LOGFILE_DELETED. This is done to prevent 43// run-away log files and guard against full disks. 44TruncateResult TruncateLogFileIfNeeded(const base::FilePath& log_file); 45 46// Call to initialize logging for Chrome installer. 47void InitInstallerLogging(const installer::MasterPreferences& prefs); 48 49// Call when done using logging for Chrome installer. 50void EndInstallerLogging(); 51 52// Returns the full path of the log file. 53base::FilePath GetLogFilePath(const installer::MasterPreferences& prefs); 54 55} // namespace installer 56 57#endif // CHROME_INSTALLER_UTIL_LOGGING_INSTALLER_H_ 58