2
* $URL: http://gpac.svn.sourceforge.net/svnroot/gpac/trunk/gpac/applications/osmo4_android/src/com/gpac/Osmo4/logs/GpacLogger.java $
4
* $LastChangedBy: enst_devs $ - $LastChangedDate: 2011-07-05 18:35:26 +0200(mar, 05 lug 2011) $
6
package com.gpac.Osmo4.logs;
8
import java.io.BufferedOutputStream;
10
import java.io.FileOutputStream;
11
import java.io.PrintStream;
12
import java.util.Date;
13
import java.util.SortedSet;
14
import java.util.TreeSet;
15
import android.util.Log;
16
import com.gpac.Osmo4.GpacConfig;
17
import com.gpac.Osmo4.GpacCallback.GF_Log_Module;
20
* This class handles logging.
22
* It will be extended soon to be configurable and enable saving files on disk
24
* @version $Revision: 3371 $
27
public class GpacLogger {
34
public GpacLogger(GpacConfig gpacConfig) {
35
loggedModules.add(GF_Log_Module.GF_LOG_AUDIO);
36
loggedModules.add(GF_Log_Module.GF_LOG_MEDIA);
37
loggedModules.add(GF_Log_Module.GF_LOG_MODULE);
38
loggedModules.add(GF_Log_Module.GF_LOG_CORE);
39
logger = new File(gpacConfig.getGpacCacheDirectory(), "gpac.log"); //$NON-NLS-1$
42
private boolean enableLogOnDisk = false;
45
* @return the enableLogOnDisk
47
public synchronized boolean isEnableLogOnDisk() {
48
return enableLogOnDisk;
52
* @param enableLogOnDisk the enableLogOnDisk to set
54
public synchronized void setEnableLogOnDisk(boolean enableLogOnDisk) {
55
this.enableLogOnDisk = enableLogOnDisk;
58
private final File logger;
61
* Called when creating logger
63
public void onCreate() {
68
writer = new PrintStream(new BufferedOutputStream(new FileOutputStream(logger), 128), true, "UTF-8"); //$NON-NLS-1$
69
} catch (Exception e) {
70
Log.e(GpacLogger.class.getSimpleName(), "Failed to create writer", e); //$NON-NLS-1$
74
writer.println("New log $Revision: 3371 $ at " + new Date()); //$NON-NLS-1$
78
* Called when stopping logger
80
public void onDestroy() {
83
PrintStream w = this.writer;
86
w.println("Closing log file at " + new Date()); //$NON-NLS-1$
98
public void onLog(int level, int module, String message) {
99
GF_Log_Module gModule = GF_Log_Module.getModule(module);
100
if (loggedModules.contains(gModule)) {
101
if (loggedLevel <= level)
102
doLog(gModule, level, message);
103
} else if (defaultLoggedLevel <= level) {
104
doLog(gModule, level, message);
108
private void doLog(GF_Log_Module module, int level, String message) {
109
Log.println(level, module.name(), message);
110
if (enableLogOnDisk) {
111
PrintStream s = writer;
113
s.println(module.name() + "\t" + message); //$NON-NLS-1$
119
private final SortedSet<GF_Log_Module> loggedModules = new TreeSet<GF_Log_Module>();
121
// The log level used by GPAC modules that are part of loggedModules collection
122
private int loggedLevel = Log.DEBUG;
124
// The log level used by GPAC modules not part of loggedModules collection
125
private int defaultLoggedLevel = Log.INFO;
128
* @return the loggedLevel
130
public synchronized int getLoggedLevel() {
135
* @param loggedLevel the loggedLevel to set
137
public synchronized void setLoggedLevel(int loggedLevel) {
138
this.loggedLevel = loggedLevel;
142
* @return the defaultLoggedLevel
144
public synchronized int getDefaultLoggedLevel() {
145
return defaultLoggedLevel;
149
* @param defaultLoggedLevel the defaultLoggedLevel to set
151
public synchronized void setDefaultLoggedLevel(int defaultLoggedLevel) {
152
this.defaultLoggedLevel = defaultLoggedLevel;
155
private volatile PrintStream writer;