Hallo zusammen.
Ich habe ein kleines Problem mit meinem Logging von einem Projekt.
Ich erstelle im Code mehrere Objekte der Klasse "TVM". Jedes Objekt läuft als Thread und kriegt seinen eigenen Logger und eine eigene Log-Datei.
Nun werden die Meldungen nicht in die jeweiligen Log-Dateien geschrieben, sondern 99% davon wird in die Datei des zuletzt instanzierten TVMs geschrieben.
So habe ich dann einfach 1068 fast leere Files und eine Datei wird dann 280KB gross. Wird der Logger überschrieben/ist etwas mit den Threads nicht in Ordnung?
Google konnte mir leider auch nicht mehr weiter helfen und deshalb frage ich nun hier noch nach, ihr wisst sicher wo der Fehler Liegt!
Hier noch ein Teil des Codes aus der Klasse TVM:
[JAVA=106]
public synchronized void initLogger() {
_actualThread = Thread.currentThread();
try {
_layout = new SimpleLayout();
_TvmFileAppender =
new FileAppender(_layout, "logs/Log_" + _mandant + "_" + _terminalID + "@" + _server + ".txt");
_TvmLogger = Logger.getLogger(Thread.currentThread().getName() + "." + this.getClass().getName());
_TvmLogger.removeAllAppenders();
_TvmLogger.addAppender(_TvmFileAppender);
_TvmLogger.setLevel(Level.ALL);
} catch (IOException e) {
_TvmLogger.error(" IO-Exception thrown! cause: " + e.getCause());
}
_TvmLogger.info("TVM Nr. " + _server + ":" + _mandant + "_" + _terminalID + " initialized");
}
public synchronized Vector<URL> inspectXML(URL link) throws DataBindingException {
if (_failed) {
return null;
} else if (_terminalID.equals("cancelXmlFile")) {
_strategy.downloadFailed(this, _numberOfTries, _TvmLogger, Constants.STEP_XML);
} else {
Vector<URL> linkList = new Vector<URL>();
DistributionJob newestJob = new DistributionJob();
TerminalConfiguration configuration = JAXB.unmarshal(link, TerminalConfiguration.class);
_TvmLogger.info("TVM Nr.:" + _server + ":" + _mandant + "_" + _terminalID
+ " Download and Inspection of XML-File complete!");
for (Terminal terminal : configuration.getTerminal()) {
for (DistributionJob job : terminal.getDistributionJob()) {
for (Category category : job.getCategory()) {
if (category.getCategoryName().equals("VerkaufsKonfiguration")) {
if (job.getId().compareTo(_jobID) > 0) {
_jobID = job.getId();
newestJob = job;
}
}
}
}
}
if (_jobID == "") {
_TvmLogger.error("TVM Nr.:" + _server + ":" + _mandant + "_" + _terminalID + " Download in attempt "
+ _numberOfTries + " failed!");
_numberOfTries++;
_TvmLogger.info("TVM Nr.:" + _server + ":" + _mandant + "_" + _terminalID
+ " has no Saleconfiguration, TVM is shutting down...");
this.shutDown();
} else {
_TvmLogger.info("TVM Nr.:" + _server + ":" + _mandant + "_" + _terminalID
+ " Newest Configuration has Number " + _jobID);
for (Category category : newestJob.getCategory()) {
if (!(category == null)) {
try {
URL downloadLink = new URL(category.getFile().getDownload().get(0).getUrl());
linkList.add(downloadLink);
} catch (MalformedURLException e) {
_TvmLogger.error("TVM Nr.:" + _mandant + "-" + _terminalID
+ " MalformedURLException thrown! cause: " + e.getCause());
_TvmLogger.info("TVM Nr.:" + _server + ":" + _mandant + "_" + _terminalID
+ " Download in attempt " + _numberOfTries + " failed, trying again!");
_strategy.downloadFailed(this, _numberOfTries + 1, _TvmLogger, Constants.STEP_XML);
}
}
}
}
return linkList;
}
return null;
}
[/code]
Nun hoffe ich, ihr könnt mir helfen, ich weis nun nicht mehr weiter! ???:L
Viele liebe Grüsse
euer Ahunzs
Ich habe ein kleines Problem mit meinem Logging von einem Projekt.
Ich erstelle im Code mehrere Objekte der Klasse "TVM". Jedes Objekt läuft als Thread und kriegt seinen eigenen Logger und eine eigene Log-Datei.
Nun werden die Meldungen nicht in die jeweiligen Log-Dateien geschrieben, sondern 99% davon wird in die Datei des zuletzt instanzierten TVMs geschrieben.
So habe ich dann einfach 1068 fast leere Files und eine Datei wird dann 280KB gross. Wird der Logger überschrieben/ist etwas mit den Threads nicht in Ordnung?
Google konnte mir leider auch nicht mehr weiter helfen und deshalb frage ich nun hier noch nach, ihr wisst sicher wo der Fehler Liegt!
Hier noch ein Teil des Codes aus der Klasse TVM:
[JAVA=106]
public synchronized void initLogger() {
_actualThread = Thread.currentThread();
try {
_layout = new SimpleLayout();
_TvmFileAppender =
new FileAppender(_layout, "logs/Log_" + _mandant + "_" + _terminalID + "@" + _server + ".txt");
_TvmLogger = Logger.getLogger(Thread.currentThread().getName() + "." + this.getClass().getName());
_TvmLogger.removeAllAppenders();
_TvmLogger.addAppender(_TvmFileAppender);
_TvmLogger.setLevel(Level.ALL);
} catch (IOException e) {
_TvmLogger.error(" IO-Exception thrown! cause: " + e.getCause());
}
_TvmLogger.info("TVM Nr. " + _server + ":" + _mandant + "_" + _terminalID + " initialized");
}
public synchronized Vector<URL> inspectXML(URL link) throws DataBindingException {
if (_failed) {
return null;
} else if (_terminalID.equals("cancelXmlFile")) {
_strategy.downloadFailed(this, _numberOfTries, _TvmLogger, Constants.STEP_XML);
} else {
Vector<URL> linkList = new Vector<URL>();
DistributionJob newestJob = new DistributionJob();
TerminalConfiguration configuration = JAXB.unmarshal(link, TerminalConfiguration.class);
_TvmLogger.info("TVM Nr.:" + _server + ":" + _mandant + "_" + _terminalID
+ " Download and Inspection of XML-File complete!");
for (Terminal terminal : configuration.getTerminal()) {
for (DistributionJob job : terminal.getDistributionJob()) {
for (Category category : job.getCategory()) {
if (category.getCategoryName().equals("VerkaufsKonfiguration")) {
if (job.getId().compareTo(_jobID) > 0) {
_jobID = job.getId();
newestJob = job;
}
}
}
}
}
if (_jobID == "") {
_TvmLogger.error("TVM Nr.:" + _server + ":" + _mandant + "_" + _terminalID + " Download in attempt "
+ _numberOfTries + " failed!");
_numberOfTries++;
_TvmLogger.info("TVM Nr.:" + _server + ":" + _mandant + "_" + _terminalID
+ " has no Saleconfiguration, TVM is shutting down...");
this.shutDown();
} else {
_TvmLogger.info("TVM Nr.:" + _server + ":" + _mandant + "_" + _terminalID
+ " Newest Configuration has Number " + _jobID);
for (Category category : newestJob.getCategory()) {
if (!(category == null)) {
try {
URL downloadLink = new URL(category.getFile().getDownload().get(0).getUrl());
linkList.add(downloadLink);
} catch (MalformedURLException e) {
_TvmLogger.error("TVM Nr.:" + _mandant + "-" + _terminalID
+ " MalformedURLException thrown! cause: " + e.getCause());
_TvmLogger.info("TVM Nr.:" + _server + ":" + _mandant + "_" + _terminalID
+ " Download in attempt " + _numberOfTries + " failed, trying again!");
_strategy.downloadFailed(this, _numberOfTries + 1, _TvmLogger, Constants.STEP_XML);
}
}
}
}
return linkList;
}
return null;
}
[/code]
Nun hoffe ich, ihr könnt mir helfen, ich weis nun nicht mehr weiter! ???:L
Viele liebe Grüsse
euer Ahunzs