Java: Logging with FileHandler, rotation
I use FileHandler for logging.
Logger l = Logger.getLogger ("mylogger");
FileHandler fh = new FileHandler ("log", 1000000, 2, true);
l.addHandler (fh);
That would always log to log.0. If that reaches 1MB it gets moved to log.1.
Logging continues at the empty log.0.
log.0
log.1
As far I see the numbers start always with 0. Is there a way to have no number at the current log and start he rotated log with 1?
log
log.1
java logging
add a comment |
I use FileHandler for logging.
Logger l = Logger.getLogger ("mylogger");
FileHandler fh = new FileHandler ("log", 1000000, 2, true);
l.addHandler (fh);
That would always log to log.0. If that reaches 1MB it gets moved to log.1.
Logging continues at the empty log.0.
log.0
log.1
As far I see the numbers start always with 0. Is there a way to have no number at the current log and start he rotated log with 1?
log
log.1
java logging
Are you using a logging framework like slf4j?
– Jabari Dash
Nov 21 '18 at 17:34
Its Javas own java.util.logging.Logger. So now external framework used.
– chris01
Nov 21 '18 at 17:47
add a comment |
I use FileHandler for logging.
Logger l = Logger.getLogger ("mylogger");
FileHandler fh = new FileHandler ("log", 1000000, 2, true);
l.addHandler (fh);
That would always log to log.0. If that reaches 1MB it gets moved to log.1.
Logging continues at the empty log.0.
log.0
log.1
As far I see the numbers start always with 0. Is there a way to have no number at the current log and start he rotated log with 1?
log
log.1
java logging
I use FileHandler for logging.
Logger l = Logger.getLogger ("mylogger");
FileHandler fh = new FileHandler ("log", 1000000, 2, true);
l.addHandler (fh);
That would always log to log.0. If that reaches 1MB it gets moved to log.1.
Logging continues at the empty log.0.
log.0
log.1
As far I see the numbers start always with 0. Is there a way to have no number at the current log and start he rotated log with 1?
log
log.1
java logging
java logging
asked Nov 21 '18 at 16:36
chris01chris01
3,76821733
3,76821733
Are you using a logging framework like slf4j?
– Jabari Dash
Nov 21 '18 at 17:34
Its Javas own java.util.logging.Logger. So now external framework used.
– chris01
Nov 21 '18 at 17:47
add a comment |
Are you using a logging framework like slf4j?
– Jabari Dash
Nov 21 '18 at 17:34
Its Javas own java.util.logging.Logger. So now external framework used.
– chris01
Nov 21 '18 at 17:47
Are you using a logging framework like slf4j?
– Jabari Dash
Nov 21 '18 at 17:34
Are you using a logging framework like slf4j?
– Jabari Dash
Nov 21 '18 at 17:34
Its Javas own java.util.logging.Logger. So now external framework used.
– chris01
Nov 21 '18 at 17:47
Its Javas own java.util.logging.Logger. So now external framework used.
– chris01
Nov 21 '18 at 17:47
add a comment |
1 Answer
1
active
oldest
votes
Short answer: Not using the default FileHandler
That said, there is nothing stopping you from writing your own StreamHandler.
This is OpenJDK's FileHandler implementation. It's actually only a couple lines of modifications to achieve your desired behaviour.
FileHandler
actually generates all the filenames upfront in an array. You simply want to tweak the generation code such that the first element does not contain the '0'. It is extremely unfortunate that it's a private method, so you have to re-implement the whole class rather than simply extending it.
NOTE: If you are going to base your implementation on OpenJDK's, please respect the license under which it is distributed. I am not a lawyer, so you may want to ask other people of the legalities of using a modified OpenJDK source.
Now that that's out of the way, look inside the generate()
method. There are two spots that use the generation
parameter, which is the index of your logfile.
} else if (ch2 == 'g') {
word = word.append(generation); // this line
// ...and...
if (count > 1 && !sawg) {
word = word.append('.').append(generation); // this line
You want them to be guarded by if (generation > 0)
That should stop the log files from showing the 0th index on the filename.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53416679%2fjava-logging-with-filehandler-rotation%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Short answer: Not using the default FileHandler
That said, there is nothing stopping you from writing your own StreamHandler.
This is OpenJDK's FileHandler implementation. It's actually only a couple lines of modifications to achieve your desired behaviour.
FileHandler
actually generates all the filenames upfront in an array. You simply want to tweak the generation code such that the first element does not contain the '0'. It is extremely unfortunate that it's a private method, so you have to re-implement the whole class rather than simply extending it.
NOTE: If you are going to base your implementation on OpenJDK's, please respect the license under which it is distributed. I am not a lawyer, so you may want to ask other people of the legalities of using a modified OpenJDK source.
Now that that's out of the way, look inside the generate()
method. There are two spots that use the generation
parameter, which is the index of your logfile.
} else if (ch2 == 'g') {
word = word.append(generation); // this line
// ...and...
if (count > 1 && !sawg) {
word = word.append('.').append(generation); // this line
You want them to be guarded by if (generation > 0)
That should stop the log files from showing the 0th index on the filename.
add a comment |
Short answer: Not using the default FileHandler
That said, there is nothing stopping you from writing your own StreamHandler.
This is OpenJDK's FileHandler implementation. It's actually only a couple lines of modifications to achieve your desired behaviour.
FileHandler
actually generates all the filenames upfront in an array. You simply want to tweak the generation code such that the first element does not contain the '0'. It is extremely unfortunate that it's a private method, so you have to re-implement the whole class rather than simply extending it.
NOTE: If you are going to base your implementation on OpenJDK's, please respect the license under which it is distributed. I am not a lawyer, so you may want to ask other people of the legalities of using a modified OpenJDK source.
Now that that's out of the way, look inside the generate()
method. There are two spots that use the generation
parameter, which is the index of your logfile.
} else if (ch2 == 'g') {
word = word.append(generation); // this line
// ...and...
if (count > 1 && !sawg) {
word = word.append('.').append(generation); // this line
You want them to be guarded by if (generation > 0)
That should stop the log files from showing the 0th index on the filename.
add a comment |
Short answer: Not using the default FileHandler
That said, there is nothing stopping you from writing your own StreamHandler.
This is OpenJDK's FileHandler implementation. It's actually only a couple lines of modifications to achieve your desired behaviour.
FileHandler
actually generates all the filenames upfront in an array. You simply want to tweak the generation code such that the first element does not contain the '0'. It is extremely unfortunate that it's a private method, so you have to re-implement the whole class rather than simply extending it.
NOTE: If you are going to base your implementation on OpenJDK's, please respect the license under which it is distributed. I am not a lawyer, so you may want to ask other people of the legalities of using a modified OpenJDK source.
Now that that's out of the way, look inside the generate()
method. There are two spots that use the generation
parameter, which is the index of your logfile.
} else if (ch2 == 'g') {
word = word.append(generation); // this line
// ...and...
if (count > 1 && !sawg) {
word = word.append('.').append(generation); // this line
You want them to be guarded by if (generation > 0)
That should stop the log files from showing the 0th index on the filename.
Short answer: Not using the default FileHandler
That said, there is nothing stopping you from writing your own StreamHandler.
This is OpenJDK's FileHandler implementation. It's actually only a couple lines of modifications to achieve your desired behaviour.
FileHandler
actually generates all the filenames upfront in an array. You simply want to tweak the generation code such that the first element does not contain the '0'. It is extremely unfortunate that it's a private method, so you have to re-implement the whole class rather than simply extending it.
NOTE: If you are going to base your implementation on OpenJDK's, please respect the license under which it is distributed. I am not a lawyer, so you may want to ask other people of the legalities of using a modified OpenJDK source.
Now that that's out of the way, look inside the generate()
method. There are two spots that use the generation
parameter, which is the index of your logfile.
} else if (ch2 == 'g') {
word = word.append(generation); // this line
// ...and...
if (count > 1 && !sawg) {
word = word.append('.').append(generation); // this line
You want them to be guarded by if (generation > 0)
That should stop the log files from showing the 0th index on the filename.
edited Nov 29 '18 at 23:23
answered Nov 22 '18 at 7:35
NPrasNPras
1,101718
1,101718
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53416679%2fjava-logging-with-filehandler-rotation%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Are you using a logging framework like slf4j?
– Jabari Dash
Nov 21 '18 at 17:34
Its Javas own java.util.logging.Logger. So now external framework used.
– chris01
Nov 21 '18 at 17:47