Skip to content

Commit 2d8bf99

Browse files
committed
allow to change disk log destination
1 parent eb20ae8 commit 2d8bf99

File tree

2 files changed

+48
-14
lines changed

2 files changed

+48
-14
lines changed

logger/src/main/java/com/orhanobut/logger/CsvFormatStrategy.java

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
package com.orhanobut.logger;
22

3-
import android.os.Environment;
4-
import android.os.Handler;
5-
import android.os.HandlerThread;
6-
7-
import java.io.File;
83
import java.text.SimpleDateFormat;
94
import java.util.Date;
105
import java.util.Locale;
@@ -80,8 +75,6 @@ private String formatTag(String tag) {
8075
}
8176

8277
public static final class Builder {
83-
private static final int MAX_BYTES = 500 * 1024; // 500K averages to a 4000 lines per file
84-
8578
Date date;
8679
SimpleDateFormat dateFormat;
8780
LogStrategy logStrategy;
@@ -118,13 +111,7 @@ public CsvFormatStrategy build() {
118111
dateFormat = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss.SSS", Locale.UK);
119112
}
120113
if (logStrategy == null) {
121-
String diskPath = Environment.getExternalStorageDirectory().getAbsolutePath();
122-
String folder = diskPath + File.separatorChar + "logger";
123-
124-
HandlerThread ht = new HandlerThread("AndroidFileLogger." + folder);
125-
ht.start();
126-
Handler handler = new DiskLogStrategy.WriteHandler(ht.getLooper(), folder, MAX_BYTES);
127-
logStrategy = new DiskLogStrategy(handler);
114+
logStrategy = DiskLogStrategy.newBuilder().build();
128115
}
129116
return new CsvFormatStrategy(this);
130117
}

logger/src/main/java/com/orhanobut/logger/DiskLogStrategy.java

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.orhanobut.logger;
22

3+
import android.os.Environment;
34
import android.os.Handler;
5+
import android.os.HandlerThread;
46
import android.os.Looper;
57
import android.os.Message;
68

@@ -16,6 +18,10 @@ public class DiskLogStrategy implements LogStrategy {
1618

1719
private final Handler handler;
1820

21+
public static Builder newBuilder() {
22+
return new Builder();
23+
}
24+
1925
public DiskLogStrategy(Handler handler) {
2026
this.handler = handler;
2127
}
@@ -100,4 +106,45 @@ private File getLogFile(String folderName, String fileName) {
100106
return newFile;
101107
}
102108
}
109+
110+
public static final class Builder {
111+
private static final int MAX_BYTES = 500 * 1024; // 500K averages to a 4000 lines per file
112+
113+
String directory;
114+
HandlerThread ht;
115+
Handler handler;
116+
117+
private Builder() {
118+
}
119+
120+
public Builder directory(String directory) {
121+
this.directory = directory;
122+
return this;
123+
}
124+
125+
public Builder handlerThread(HandlerThread ht) {
126+
this.ht = ht;
127+
return this;
128+
}
129+
130+
public Builder handler(Handler handler) {
131+
this.handler = handler;
132+
return this;
133+
}
134+
135+
public DiskLogStrategy build() {
136+
if (directory == null) {
137+
String diskPath = Environment.getExternalStorageDirectory().getAbsolutePath();
138+
directory = diskPath + File.separatorChar + "logger";
139+
}
140+
if (ht == null) {
141+
ht = new HandlerThread("AndroidFileLogger." + directory);
142+
ht.start();
143+
}
144+
if (handler == null) {
145+
handler = new DiskLogStrategy.WriteHandler(ht.getLooper(), directory, MAX_BYTES);
146+
}
147+
return new DiskLogStrategy(handler);
148+
}
149+
}
103150
}

0 commit comments

Comments
 (0)