summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorAndrew A. de Laix <alain@lindenlab.com>2010-06-02 11:03:03 -0700
committerAndrew A. de Laix <alain@lindenlab.com>2010-06-02 11:03:03 -0700
commit8990498b420ba7083aa35c3eb08d87ebcd2a29a4 (patch)
treebc8cc1c7712845e18d085c3e58ae6998cd415451 /indra/newview
parentbca81fdc7e4257169ecb337e299573a2c1e24619 (diff)
Crash logger renames log flies to safe names so they don't get clobbered on SL restart. Old logs are cleaned up after 1 week.
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llappviewer.cpp30
1 files changed, 28 insertions, 2 deletions
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 351c0cbae5..a5343bb522 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -81,7 +81,7 @@
#include "llvoicechannel.h"
#include "llvoavatarself.h"
#include "llsidetray.h"
-
+#include "lldate.h"
#include "llweb.h"
#include "llsecondlifeurls.h"
@@ -102,6 +102,7 @@
// Third party library includes
#include <boost/bind.hpp>
+#include <boost/regex.hpp>
#if LL_WINDOWS
@@ -1242,12 +1243,37 @@ bool LLAppViewer::cleanup()
// workaround for DEV-35406 crash on shutdown
LLEventPumps::instance().reset();
- // remove any old breakpad minidump files from the log directory
if (! isError())
{
+ // remove any old breakpad minidump files from the log directory
std::string logdir = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "");
logdir += gDirUtilp->getDirDelimiter();
gDirUtilp->deleteFilesInDir(logdir, "*-*-*-*-*.dmp");
+
+ // remove any old log files saved from old crash reports.
+ const static std::string mask = "*.*.log";
+ std::string filename;
+ while (gDirUtilp->getNextFileInDir(logdir, mask, filename, false))
+ {
+ static const boost::regex
+ file_regex(".*\\.(.*)\\.log", boost::regex::extended);
+ boost::smatch match;
+ if(boost::regex_match(filename, match, file_regex) && match.size() > 1)
+ {
+ F64 date = LLDate(match[1]).secondsSinceEpoch();
+ F64 age = LLDate::now().secondsSinceEpoch() - date;
+ if( date > 0.0 && age > 604800.0 )
+ {
+ // Clean up files older than 1 week.
+ llinfos << "removing old log file " << filename << llendl;
+ LLFile::remove(gDirUtilp->getExpandedFilename(LL_PATH_LOGS, filename));
+ }
+ }
+ else
+ {
+ // ignore;
+ }
+ }
}
// *TODO - generalize this and move DSO wrangling to a helper class -brad