Son pas une bonne idée de faire ce que vous avez écrit, mais si vous avez vraiment besoin, écrire un propre appender comme ceci:
package de.steamnet.loggingUtils;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.spi.LoggingEvent;
public class BinaryAppender extends AppenderSkeleton {
FileOutputStream fout;
public BinaryAppender() throws FileNotFoundException {
fout = new FileOutputStream("/tmp/somefile.log.bin");
}
@Override
protected void append(LoggingEvent le) {
String origMessage = le.getLoggerName() + " said: " + le.getMessage();
byte[] obscure = origMessage.getBytes();
for(int ii = 0; ii < obscure.length; ii++) {
if(obscure[ii] == Byte.MAX_VALUE) {
obscure[ii] = Byte.MIN_VALUE;
} else {
obscure[ii] = (byte)(obscure[ii] +1); // thats a really bad idea to create 'nonesense stuff' that way!
}
}
try {
fout.write(obscure);
} catch (IOException ex) {
System.out.println("too bad. File writer bombed.");
}
}
@Override
public boolean requiresLayout() {
return false; // we do all layouting in here.
}
@Override
public void close() {
try {
fout.close();
} catch (IOException ex) {
System.out.println("too bad. could not close it.");
}
}
}
Puis dans votre config log4j utiliser cette classe comme appender et vous avez terminé avec la partie écrite. pour la partie de lecture, vous devez à nouveau lire l'octet par octet et réduire l'octet de un, puis charger une chaîne à partir de celui-ci.
Bonne chance.
Je l'ai eu à travers le codage dans le fichier java .. –
quelle est la façon possible de créer un fichier journal binaire dans log4jconfig [xml ou propriétés] ..? –
Tous les enregistreurs standard sont conçus pour enregistrer du texte et ** uniquement du texte **. Si vous voulez écrire binaire, vous devez le faire vous-même comme je l'ai suggéré. –