| 
							- /*
 -   ==============================================================================
 - 
 -    This file is part of the JUCE library.
 -    Copyright (c) 2016 - ROLI Ltd.
 - 
 -    Permission is granted to use this software under the terms of the ISC license
 -    http://www.isc.org/downloads/software-support-policy/isc-license/
 - 
 -    Permission to use, copy, modify, and/or distribute this software for any
 -    purpose with or without fee is hereby granted, provided that the above
 -    copyright notice and this permission notice appear in all copies.
 - 
 -    THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD
 -    TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
 -    FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT,
 -    OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
 -    USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
 -    TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
 -    OF THIS SOFTWARE.
 - 
 -    -----------------------------------------------------------------------------
 - 
 -    To release a closed-source product which uses other parts of JUCE not
 -    licensed under the ISC terms, commercial licenses are available: visit
 -    www.juce.com for more information.
 - 
 -   ==============================================================================
 - */
 - 
 - #pragma once
 - 
 - 
 - //==============================================================================
 - /**
 -     A simple implementation of a Logger that writes to a file.
 - 
 -     @see Logger
 - */
 - class JUCE_API  FileLogger  : public Logger
 - {
 - public:
 -     //==============================================================================
 -     /** Creates a FileLogger for a given file.
 - 
 -         @param fileToWriteTo    the file that to use - new messages will be appended
 -                                 to the file. If the file doesn't exist, it will be created,
 -                                 along with any parent directories that are needed.
 -         @param welcomeMessage   when opened, the logger will write a header to the log, along
 -                                 with the current date and time, and this welcome message
 -         @param maxInitialFileSizeBytes  if this is zero or greater, then if the file already exists
 -                                 but is larger than this number of bytes, then the start of the
 -                                 file will be truncated to keep the size down. This prevents a log
 -                                 file getting ridiculously large over time. The file will be truncated
 -                                 at a new-line boundary. If this value is less than zero, no size limit
 -                                 will be imposed; if it's zero, the file will always be deleted. Note that
 -                                 the size is only checked once when this object is created - any logging
 -                                 that is done later will be appended without any checking
 -     */
 -     FileLogger (const File& fileToWriteTo,
 -                 const String& welcomeMessage,
 -                 const int64 maxInitialFileSizeBytes = 128 * 1024);
 - 
 -     /** Destructor. */
 -     ~FileLogger();
 - 
 -     //==============================================================================
 -     /** Returns the file that this logger is writing to. */
 -     const File& getLogFile() const noexcept               { return logFile; }
 - 
 -     //==============================================================================
 -     /** Helper function to create a log file in the correct place for this platform.
 - 
 -         The method might return nullptr if the file can't be created for some reason.
 - 
 -         @param logFileSubDirectoryName      the name of the subdirectory to create inside the logs folder (as
 -                                             returned by getSystemLogFileFolder). It's best to use something
 -                                             like the name of your application here.
 -         @param logFileName                  the name of the file to create, e.g. "MyAppLog.txt".
 -         @param welcomeMessage               a message that will be written to the log when it's opened.
 -         @param maxInitialFileSizeBytes      (see the FileLogger constructor for more info on this)
 -     */
 -     static FileLogger* createDefaultAppLogger (const String& logFileSubDirectoryName,
 -                                                const String& logFileName,
 -                                                const String& welcomeMessage,
 -                                                const int64 maxInitialFileSizeBytes = 128 * 1024);
 - 
 -     /** Helper function to create a log file in the correct place for this platform.
 - 
 -         The filename used is based on the root and suffix strings provided, along with a
 -         time and date string, meaning that a new, empty log file will be always be created
 -         rather than appending to an exising one.
 - 
 -         The method might return nullptr if the file can't be created for some reason.
 - 
 -         @param logFileSubDirectoryName      the name of the subdirectory to create inside the logs folder (as
 -                                             returned by getSystemLogFileFolder). It's best to use something
 -                                             like the name of your application here.
 -         @param logFileNameRoot              the start of the filename to use, e.g. "MyAppLog_". This will have
 -                                             a timestamp and the logFileNameSuffix appended to it
 -         @param logFileNameSuffix            the file suffix to use, e.g. ".txt"
 -         @param welcomeMessage               a message that will be written to the log when it's opened.
 -     */
 -     static FileLogger* createDateStampedLogger (const String& logFileSubDirectoryName,
 -                                                 const String& logFileNameRoot,
 -                                                 const String& logFileNameSuffix,
 -                                                 const String& welcomeMessage);
 - 
 -     //==============================================================================
 -     /** Returns an OS-specific folder where log-files should be stored.
 - 
 -         On Windows this will return a logger with a path such as:
 -         c:\\Documents and Settings\\username\\Application Data\\[logFileSubDirectoryName]\\[logFileName]
 - 
 -         On the Mac it'll create something like:
 -         ~/Library/Logs/[logFileSubDirectoryName]/[logFileName]
 - 
 -         @see createDefaultAppLogger
 -     */
 -     static File getSystemLogFileFolder();
 - 
 -     // (implementation of the Logger virtual method)
 -     void logMessage (const String&);
 - 
 -     //==============================================================================
 -     /** This is a utility function which removes lines from the start of a text
 -         file to make sure that its total size is below the given size.
 -     */
 -     static void trimFileSize (const File& file, int64 maxFileSize);
 - 
 - private:
 -     //==============================================================================
 -     File logFile;
 -     CriticalSection logLock;
 - 
 -     JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FileLogger)
 - };
 
 
  |