8153074: UL: Show output option in VM.log jcmd

Reviewed-by: dholmes, mlarsson
This commit is contained in:
Yasumasa Suenaga 2016-07-06 20:58:08 +09:00
parent 2cede6dbc1
commit c02ce6ab61
5 changed files with 30 additions and 11 deletions

View file

@ -415,17 +415,8 @@ void LogConfiguration::describe_available(outputStream* out){
void LogConfiguration::describe_current_configuration(outputStream* out){ void LogConfiguration::describe_current_configuration(outputStream* out){
out->print_cr("Log output configuration:"); out->print_cr("Log output configuration:");
for (size_t i = 0; i < _n_outputs; i++) { for (size_t i = 0; i < _n_outputs; i++) {
out->print("#" SIZE_FORMAT ": %s ", i, _outputs[i]->name()); out->print("#" SIZE_FORMAT ": ", i);
out->print_raw(_outputs[i]->config_string()); _outputs[i]->describe(out);
out->print(" ");
char delimiter[2] = {0};
for (size_t d = 0; d < LogDecorators::Count; d++) {
LogDecorators::Decorator decorator = static_cast<LogDecorators::Decorator>(d);
if (_outputs[i]->decorators().is_decorator(decorator)) {
out->print("%s%s", delimiter, LogDecorators::name(decorator));
*delimiter = ',';
}
}
out->cr(); out->cr();
} }
} }

View file

@ -428,3 +428,13 @@ char* LogFileOutput::make_file_name(const char* file_name,
result[result_len] = '\0'; result[result_len] = '\0';
return result; return result;
} }
void LogFileOutput::describe(outputStream *out) {
LogOutput::describe(out);
out->print(" ");
out->print("filecount=%u,filesize=" SIZE_FORMAT "%s", _file_count,
byte_size_in_proper_unit(_rotate_size),
proper_unit_for_byte_size(_rotate_size));
}

View file

@ -85,6 +85,7 @@ class LogFileOutput : public LogFileStreamOutput {
virtual int write(const LogDecorations& decorations, const char* msg); virtual int write(const LogDecorations& decorations, const char* msg);
virtual int write(LogMessageBuffer::Iterator msg_iterator); virtual int write(LogMessageBuffer::Iterator msg_iterator);
virtual void force_rotate(); virtual void force_rotate();
virtual void describe(outputStream *out);
virtual const char* name() const { virtual const char* name() const {
return _name; return _name;

View file

@ -83,3 +83,18 @@ void LogOutput::add_to_config_string(const LogTagSet* ts, LogLevelType level) {
break; break;
} }
} }
void LogOutput::describe(outputStream *out) {
out->print("%s ", name());
out->print_raw(config_string());
out->print(" ");
char delimiter[2] = {0};
for (size_t d = 0; d < LogDecorators::Count; d++) {
LogDecorators::Decorator decorator = static_cast<LogDecorators::Decorator>(d);
if (decorators().is_decorator(decorator)) {
out->print("%s%s", delimiter, LogDecorators::name(decorator));
*delimiter = ',';
}
}
}

View file

@ -83,6 +83,8 @@ class LogOutput : public CHeapObj<mtLogging> {
// Do nothing by default. // Do nothing by default.
} }
virtual void describe(outputStream *out);
virtual const char* name() const = 0; virtual const char* name() const = 0;
virtual bool initialize(const char* options, outputStream* errstream) = 0; virtual bool initialize(const char* options, outputStream* errstream) = 0;
virtual int write(const LogDecorations& decorations, const char* msg) = 0; virtual int write(const LogDecorations& decorations, const char* msg) = 0;