import java.net.InetAddress; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; import java.util.concurrent.atomic.AtomicInteger; import org.apache.commons.lang.StringUtils; public class LogIdUtil { private static String machineIp; private static final transient AtomicInteger ID = new AtomicInteger(new Random().nextInt(99999999)); private static final DateFormat df = new SimpleDateFormat("yyMMddHHmmss"); static { try { String[] ips = InetAddress.getLocalHost().getHostAddress().split("\\."); machineIp = StringUtils.leftPad(Integer.toHexString(Integer.parseInt(ips[2])), 2, '0') + StringUtils.leftPad(Integer.toHexString(Integer.parseInt(ips[3])), 2, '0'); } catch (Exception e) { throw new RuntimeException("Init machineIp failed", e); } } /** * Generate LOGID based on system ID, date, IP address, and auto-increment * @param systemId Four-digit system ID * @return */ public static String getId() { synchronized (LogIdUtil.class) { ID.compareAndSet(999999999, 0); return df.format(new Date()) + machineIp + StringUtils.leftPad(String.valueOf(ID.incrementAndGet()), 10, '0'); } } }
Generate LOGID based on system ID, date, IP address, and auto-increment
Guess you like
Origin http://43.154.161.224:23101/article/api/json?id=326272045&siteId=291194637
Recommended
Ranking