java日志类多线程同步问题!
如题:现在要做一个日志工具类.主要是保存系统生成的日志.
现在遇到多线程访问时不同步的问题.
KLinkLog.initKingLog("c://kinghi1.log", KLinkLog2.DEBUG, "c://log", 100);
KLinkLog.writeLog(KLinkLog2.NORMAL, "kinghi-test1-"+this.hashCode());
initKingLog和writeLog都是synchronized的.
假如出现当一个线程写C://kinghi1.log.而另一个线程写C://kinghi2.log时.
出现的线程又写到了kinghi1.log.也写到了kinghi2.log
代码如下:
public class KLinkLog {
public final static int DEBUG = 3;
//日志名
private static String logName = "./Kinghi.log";
//日志级别
private static int level = 2;
//备份路径
private static String bakPath = null;
//日志文件最大大小
private static int maxSize = 100;
//日期格式化
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd.HH.mm.SSS");
private KLinkLog() {
}
public static synchronized void initKingLog(String logName,int level,String bakPath,int maxSize)
{
//参数检测
if(level == KLinkLog.NONE || level < KLinkLog.NONE || level > KLinkLog.DEBUG
|| logName == null ||logName.equals("")
|| maxSize <=0)
{
return;
}
else
{
KLinkLog.logName = logName;
KLinkLog.level = level;
KLinkLog.bakPath = bakPath;
KLinkLog.maxSize = maxSize;
}
}
/**
* 向日志中写日志
* @param level 日志级别
* @param message //写入消息
* @return 返回1为没有写入.返回0为写入成功
*/
public static int writeLog(int level, String message)
{
//.............I/O操作
}
}
解决100分送上.