hotspot/src/share/vm/logging/logFileOutput.hpp
changeset 37465 1d5551f466ee
parent 35230 a528ea8203ec
child 38263 a7488329ad27
equal deleted inserted replaced
37464:5373bbadb433 37465:1d5551f466ee
    37   static const char*  FileCountOptionKey;
    37   static const char*  FileCountOptionKey;
    38   static const char*  FileSizeOptionKey;
    38   static const char*  FileSizeOptionKey;
    39   static const char*  PidFilenamePlaceholder;
    39   static const char*  PidFilenamePlaceholder;
    40   static const char*  TimestampFilenamePlaceholder;
    40   static const char*  TimestampFilenamePlaceholder;
    41   static const char*  TimestampFormat;
    41   static const char*  TimestampFormat;
       
    42   static const size_t DefaultFileCount = 5;
       
    43   static const size_t DefaultFileSize = 20 * M;
    42   static const size_t StartTimeBufferSize = 20;
    44   static const size_t StartTimeBufferSize = 20;
    43   static const size_t PidBufferSize       = 21;
    45   static const size_t PidBufferSize = 21;
       
    46   static const uint   MaxRotationFileCount = 1000;
    44   static char         _pid_str[PidBufferSize];
    47   static char         _pid_str[PidBufferSize];
    45   static char         _vm_start_time_str[StartTimeBufferSize];
    48   static char         _vm_start_time_str[StartTimeBufferSize];
    46 
    49 
    47   const char* _name;
    50   const char* _name;
    48   char* _file_name;
    51   char* _file_name;
    59   // Semaphore used for synchronizing file rotations and writes
    62   // Semaphore used for synchronizing file rotations and writes
    60   Semaphore _rotation_semaphore;
    63   Semaphore _rotation_semaphore;
    61 
    64 
    62   void archive();
    65   void archive();
    63   void rotate();
    66   void rotate();
    64   bool configure_rotation(const char* options);
    67   bool parse_options(const char* options, outputStream* errstream);
    65   char *make_file_name(const char* file_name, const char* pid_string, const char* timestamp_string);
    68   char *make_file_name(const char* file_name, const char* pid_string, const char* timestamp_string);
    66   static size_t parse_value(const char* value_str);
       
    67 
    69 
    68   bool should_rotate() {
    70   bool should_rotate() {
    69     return _file_count > 0 && _rotate_size > 0 && _current_size >= _rotate_size;
    71     return _file_count > 0 && _rotate_size > 0 && _current_size >= _rotate_size;
    70   }
    72   }
    71 
    73 
       
    74   void increment_file_count() {
       
    75     _current_file++;
       
    76     if (_current_file == _file_count) {
       
    77       _current_file = 0;
       
    78     }
       
    79   }
       
    80 
    72  public:
    81  public:
    73   LogFileOutput(const char *name);
    82   LogFileOutput(const char *name);
    74   virtual ~LogFileOutput();
    83   virtual ~LogFileOutput();
    75   virtual bool initialize(const char* options);
    84   virtual bool initialize(const char* options, outputStream* errstream);
    76   virtual int write(const LogDecorations& decorations, const char* msg);
    85   virtual int write(const LogDecorations& decorations, const char* msg);
    77   virtual void force_rotate();
    86   virtual void force_rotate();
    78 
    87 
    79   virtual const char* name() const {
    88   virtual const char* name() const {
    80     return _name;
    89     return _name;