L'application Java que je gère enregistre certains détails dans un fichier plat. Le problème auquel je suis confronté est que l'entrée est très faible par rapport à la veille. Cette entrée est essentielle car nos rapports sont générés en fonction du fichier. Je suis allé thro code pour l'écriture, je ne pouvais pas comprendre les problèmes. la méthode qui écrit est la méthode de synchronisation.L'écriture Java dans un fichier texte ne fonctionne pas correctement
Des suggestions? Je peux également fournir le code pour vous dont vous pourriez avoir besoin?
public synchronized void log (String connID, String hotline, String callerType,
String cli, String lastMenu, String lastInput,
String status, String reason)
{
//String absoluteFP = LOG_LOC + ls + this.getFilename();
//PrintWriter pw = this.getPrintWriter(absoluteFP, true, true);
try
{
pw.print (this.getDateTime()+ ","+connID +","+hotline+","+callerType+","+ cli+"," + lastMenu + "," + lastInput + "," + status + "," + reason);
//end 1006
pw.print (ls);
pw.flush();
//pw.close();
}
catch (Exception e)
{
e.printStackTrace();
return;
}
}
private synchronized PrintWriter getPrintWriter (String absoluteFileName,
boolean append, boolean autoFlush)
{
try
{
//set absolute filepath
File folder = new File (absoluteFileName).getParentFile();//2009-01-23
File f = new File (absoluteFileName);
if (!folder.exists())//2009-01-23
{
//System.out.println ("Call Detailed Record folder NOT FOUND! Creating a new);
folder.mkdirs();
//System.out.println ("Configure log folder");
this.setHiddenFile (LOG_LOC);//set tmp directory to hidden folder
if (!f.exists())
{
//System.out.println ("Creating a new Call Detailed Record...");//2009-01-23
f.createNewFile();//2009-01-23
}
}
else
{
if (!f.exists())
{
//System.out.println ("Creating a new Call Detailed Record...");//2009-01-23
f.createNewFile();//2009-01-23
}
}
FileOutputStream tempFOS = new FileOutputStream (absoluteFileName, append);
if (tempFOS != null)
{
return new PrintWriter (tempFOS, autoFlush);
}
else
{
return null;
}
}
catch (Exception ex)
{
ex.printStackTrace();
return null;
}
}
/**
* Set the given absolute file path as a hidden file.
* @param absoluteFile String
*/
private void setHiddenFile (String absoluteFile)
{
//set hidden file
//2009-01-22, KC
Runtime rt = Runtime.getRuntime();
absoluteFile = absoluteFile.substring (0, absoluteFile.length() - 1);//2009-01-23
try
{
System.out.println (rt.exec ("attrib +H " + "\"" + absoluteFile + "\"").getInputStream().toString());
}
catch (IOException e)
{
e.printStackTrace();
}
}
private String getDateTime()
{
//2011-076-09, KC-format up to milliseconds to prevent duplicate PK in CDR table.
//return DateUtils.now ("yyyy/MM/dd HH:mm:ss");
return DateUtils.now ("yyyy/MM/dd HH:mm:ss:SSS");
//end 0609
}
private String getFilename()
{
///return "CDR_" + port + ".dat";//2010-10-01
return port + ".dat";//2010-10-01
}
public void closePW()
{
if (pw != null)
{
pw.close();
}
}
Êtes-vous sûr que les entrées de journal sont vraiment manquantes (peut-être qu'il n'y avait pas beaucoup d'activité pour ce jour-là)? Si vous utilisez une bibliothèque de journalisation établie (et vous devriez probablement le faire), il est très improbable qu'ils aient cette fonctionnalité de base erronée. – Thilo
pouvez-vous poster du code? –
Je n'ai aucune idée de ce que vous voulez arriver. S'il vous plaît poster un code pertinent afin que nous ayons un endroit pour commencer à ce sujet. – Jon