package tools;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class FileoutputUtil {
public static final String Acc_Stuck = "日志/AccountStuck.log";
public static final String Item_Expire = "日志/道具到期.txt";
public static final String EXCEPTION_CAUGHT = "日志/exceptionCaught.txt";
public static final String Login_Error = "日志/登入错误.log";
public static final String Packet_Record = "日志/数据包_编写.txt";
public static final String Packet_Error = "日志/数据包_错误.txt";
public static final String Packet_Ex = "日志/数据包_异常.txt";
public static final String Packet_Unk = "日志/数据包_未知.txt";
public static final String PacketLog = "日志/数据包_收发.log";
public static final String SkillsLog = "日志/技能日志.log";
public static final String SkillBuff = "日志/技能BUFF日志.log";
public static final String AttackLog = "日志/攻击日志.log";
public static final String ClientError = "日志/客户端错误.log";
public static final String PlayerSkills = "日志/玩家技能.log";
public static final String Zakum_Log = "日志/日志_扎昆.log";
public static final String Horntail_Log = "日志/日志_暗黑龙王.log";
public static final String Pinkbean_Log = "日志/品克缤.log";
public static final String PacketEx_Log = "日志/封包异常.log";
public static final String Donator_Log = "日志/捐赠.log";
public static final String Hacker_Log = "日志/Hacker.log";
public static final String SpecialSkill_log = "日志/SpecialSkill.log";
public static final String SkillCancel_Error = "日志/取消BUFF错误.txt";
public static final String 掉血错误 = "日志/掉血错误.log";
public static final String 攻击出错 = "日志/攻击出错.log";
public static final String 攻击异常 = "日志/攻击异常.log";
public static final String 封包出错 = "日志/封包出错.log";
public static final String 数据异常 = "日志/数据异常.log";
public static final String 复制装备 = "日志/复制装备.log";
public static final String 攻击怪物封包 = "日志/攻击怪物封包.log";
public static final String 获取未处理被动技能 = "日志/获取未处理被动技能.log";
public static final String 在线统计 = "日志/在线统计.txt";
public static final String 发现异常 = "日志/发现异常.txt";
public static final String 离开商城 = "日志/离开商城.txt";
public static final String 玩家互动封包 = "日志/玩家互动封包.txt";
public static final String 捐赠 = "日志/捐赠.txt";
public static final String 地图名字错误 = "日志/地图名字错误.txt";
public static final String 未处理的怪物技能 = "日志/未处理的怪物技能.log";
public static final String CommandErr_Log = "日志/命令错误.log";
public static final String CommandEx_Log = "日志/命令异常.log";
public static final String ScriptEx_Log = "日志/脚本/脚本异常.log";
public static final String Event_ScriptEx_Log = "日志/脚本/事件脚本异常.log";
public static final String Item_ScriptEx_Log = "日志/脚本/物品脚本异常.log";
public static final String Map_ScriptEx_Log = "日志/脚本/地图脚本异常.log";
public static final String Portal_ScriptEx_Log = "日志/脚本/传送点脚本异常.log";
public static final String Reactor_ScriptEx_Log = "日志/脚本/反应堆脚本异常.log";
public static final String Quest_ScriptEx_Log = "日志/脚本/任务脚本异常.log";
public static final String SQL_Ex_Log = "日志/数据库异常.log";
public static final String GUI_Ex_Log = "日志/GUI异常记录.log";
public static final String Shark_Dir = "日志/枫鲨档案/";
public static final String HiredMerchDir = "日志/HiredMerch/";
public static final String Movement_Dir = "日志/移动封包出错/";
public static final String Movement_Sumon = Movement_Dir + "召唤兽移动出错.log";
public static final String Movement_Char = Movement_Dir + "角色移动出错.log";
public static final String Movement_Pet = Movement_Dir + "宠物移动出错.log";
public static final String Movement_Mob = Movement_Dir + "怪物移动出错.log";
public static final String Movement_Err = Movement_Dir + "移动封包出错.log";
public static final String Movement_Unk = Movement_Dir + "未知移动封包.log";
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private static final SimpleDateFormat sdfGMT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private static final SimpleDateFormat sdf_ = new SimpleDateFormat("yyyy-MM-dd");
private static final String FILE_PATH = "日志/";
private static final String ERROR = "錯誤/" + sdf_.format(Calendar.getInstance().getTime()) + "/";
private static final String GeneralLog = "日志/运行日志.log";
public static void printError(String name, String msg) {
printError(name, null, msg);
}
public static void printError(String name, Throwable t) {
printError(name, t, null);
}
public static void printError(String name, Throwable t, String info) {
outputFileError(FILE_PATH + ERROR + name, t, info);
}
public static void outputFileError(String name, String msg) {
outputFileError(name, null, msg);
}
public static void outputFileError(String file, Throwable t) {
outputFileError(file, t, null);
}
public static void outputFileError(String file, Throwable t, String info) {
logToFile(file, "\r\n------------------------ " + CurrentReadable_Time() + " ------------------------\r\n" + (info != null ? (info + "\r\n") : "") + (t != null ? getString(t) : ""));
}
public static void log(String msg) {
logToFile(FileoutputUtil.GeneralLog,msg+"\r\n");
}
public static void log(String file, String msg) {
log(file, msg, true);
}
public static void log(String file, String msg, boolean warp) {
logToFile(file, (warp ? "\r\n------------------------ " + CurrentReadable_Time() + " ------------------------\r\n" : "") + msg);
}
public static void packetLog(String file, String msg) {
logToFile(file, msg + "\r\n\r\n");
}
public static void hiredMerchLog(String name, String msg) {
logToFile(HiredMerchDir + name + ".txt", "[" + CurrentReadable_Time() + "] " + msg + "\r\n");
}
public static void logToFile(final String file, final String msg) {
FileOutputStream out = null;
try {
File outputFile = new File(file);
if (outputFile.getParentFile() != null) {
outputFile.getParentFile().mkdirs();
}
out = new FileOutputStream(file, true);
OutputStreamWriter osw = new OutputStreamWriter(out, "UTF-8");
osw.write(msg);
osw.flush();
} catch (IOException ess) {
} finally {
try {
if (out != null) {
out.close();
}
} catch (IOException ignore) {
}
}
}
public static String CurrentReadable_Date() {
return sdf_.format(Calendar.getInstance().getTime());
}
public static String CurrentReadable_Time() {
return sdf.format(Calendar.getInstance().getTime());
}
public static String CurrentReadable_TimeGMT() {
return sdfGMT.format(new Date());
}
public static String getString(Throwable e) {
String retValue = null;
StringWriter sw = null;
PrintWriter pw = null;
try {
sw = new StringWriter();
pw = new PrintWriter(sw);
e.printStackTrace(pw);
retValue = sw.toString();
} finally {
try {
if (pw != null) {
pw.close();
}
if (sw != null) {
sw.close();
}
} catch (IOException ignore) {
}
}
return retValue;
}
static {
sdfGMT.setTimeZone(TimeZone.getTimeZone("GMT"));
}
}