| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University. All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license. You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file PPLogger.cpp
- * @author atrestman
- * @date 2009-09-14
- */
- #include "stdafx.h"
- #include "PPLogger.h"
- #include "mkdir_complete.h"
- #include "wstring_encode.h"
- #include <windows.h>
- std::ofstream PPLogger::m_logfile;
- bool PPLogger::m_isOpen = false;
- PPLogger::PPLogger( )
- {
- }
- PPLogger::~PPLogger( )
- {
- }
- void PPLogger::Open( const std::string &rootDir )
- {
- if (!m_isOpen) {
- // Note that this logfile name may not be specified at runtime. It must
- // be compiled in if it is specified at all.
- std::string log_directory;
- // Allow the developer to compile in the log directory.
- #ifdef P3D_PLUGIN_LOG_DIRECTORY
- if (log_directory.empty()) {
- log_directory = P3D_PLUGIN_LOG_DIRECTORY;
- }
- #endif
- // Failing that, we write logfiles to Panda3Dlog.
- if (log_directory.empty()) {
- log_directory = rootDir + "/log";
- }
- mkdir_complete(log_directory, std::cerr);
- // Ensure that the log directory ends with a slash.
- if (!log_directory.empty() && log_directory[log_directory.size() - 1] != '/') {
- #ifdef _WIN32
- if (log_directory[log_directory.size() - 1] != '\\')
- #endif
- log_directory += "/";
- }
- // Construct the logfile pathname.
- std::string log_basename;
- #ifdef P3D_PLUGIN_LOG_BASENAME1
- if (log_basename.empty()) {
- log_basename = P3D_PLUGIN_LOG_BASENAME1;
- }
- #endif
- if (log_basename.empty()) {
- log_basename = "p3dplugin";
- }
- if (!log_basename.empty()) {
- std::string log_pathname = log_directory;
- log_pathname += log_basename;
- log_pathname += ".log";
- m_logfile.close();
- m_logfile.clear();
- wstring log_pathname_w;
- string_to_wstring(log_pathname_w, log_pathname);
- m_logfile.open(log_pathname_w.c_str(), std::ios::out | std::ios::trunc);
- m_logfile.setf(std::ios::unitbuf);
- }
- // If we didn't have a logfile name compiled in, we throw away log output
- // by the simple expedient of never actually opening the ofstream.
- m_isOpen = true;
- }
- }
|