package org.erlide.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.eclipse.core.runtime.Platform;
public final class LogUtil {
public static String getReportFile() {
final String s = getReportLocation();
final String tstamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
return s + "/" + System.getProperty("user.name") + "_" + tstamp + ".txt";
}
public static String getReportLocation() {
String s = System.getProperty("erlide.logDirectory");
if (s == null) {
s = "/proj/uz/erlide/problemreports";
}
final File dir = new File(s);
if (!dir.exists()) {
final String homeDir = SystemConfiguration.getInstance().getHomeDir();
s = homeDir;
}
return s;
}
public static String fetchErlideLog() {
final StringBuffer result = new StringBuffer();
final File log = new File(ErlLogger.getInstance().getLogFile());
try (final BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileInputStream(log), "UTF-8"))) {
for (;;) {
final String line = reader.readLine();
if (line == null) {
break;
}
if (line.length() == 0) {
continue;
}
result.append(line).append('\n');
}
} catch (final Exception e) {
ErlLogger.warn(e);
}
return result.toString();
}
public static String fetchPlatformLog() {
final List<String> result = new ArrayList<>();
final File log = Platform.getLogFileLocation().toFile();
try (final BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileInputStream(log), "UTF-8"))) {
for (;;) {
String line = reader.readLine();
if (line == null) {
break;
}
line = line.trim();
if (line.length() == 0) {
continue;
}
if (line.startsWith("!SESSION ")) {
result.clear();
}
result.add(line);
}
} catch (final Exception e) {
ErlLogger.warn(e);
}
final StringBuffer buf = new StringBuffer();
for (final String s : result) {
buf.append(s).append('\n');
}
return buf.toString();
}
public static String fetchStraceLog(final String filename) {
final StringBuffer result = new StringBuffer();
final File log = new File(filename);
if (log.exists()) {
try (final BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileInputStream(log), "UTF-8"))) {
for (;;) {
String line = reader.readLine();
if (line == null) {
break;
}
line = line.trim();
if (line.length() == 0) {
continue;
}
result.append(line).append('\n');
}
} catch (final Exception e) {
}
}
return result.toString();
}
private LogUtil() {
}
}