Voglio creare un logger personalizzato per l'applicazione Android. La registrazione deve essere eseguita in un thread separato poiché l'applicazione genera molte informazioni. Non voglio utilizzare i log Android poiché ho bisogno di scrivere i registri in un formato specifico. Più thread saranno la scrittura nel file di registro, allo stesso tempo, così ho usato una coda per mantenere i messaggi di logRegistrazione personalizzata per l'applicazione Android
Ecco il codice che ho
Queue<LogEntry> logQueue = new LinkedBlockingQueue<LogEntry>();
LogWritterThread logWritterThread = new LogWritterThread();
// to queue the log messages
public void QueueLogEntry(String message)
{
LogEntry le = new LogEntry(message);
{
logQueue.add(le);
logQueue.notifyAll();
}
logWritterThread.start();
}
class LogWritterThread extends Thread
{
public void run()
{
try
{
while(true)
{
//thread waits until there are any logs to write in the queue
if(logQueue.peek() == null)
synchronized(logQueue){
logQueue.wait();
}
if(logQueue.peek() != null)
{
LogEntry logEntry;
synchronized(logQueue){
logEntry = logQueue.poll();
}
// write the message to file
}
if(Thread.interrupted())
break;
}
}
catch (InterruptedException e)
{
}
}
}
C'è qualche cosa di sbagliato in questo codice? o un modo migliore per creare una coda di registrazione
Grazie, Anuj
Grazie per l'aiuto .... –