[ https://issues.apache.org/jira/browse/LOG4NET-412?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13993466#comment-13993466 ]
Son Tran commented on LOG4NET-412: ---------------------------------- I add new class DateTimeMs to get millisecond in netcf. And change LoggingEvent function like this: public LoggingEvent(Type callerStackBoundaryDeclaringType, log4net.Repository.ILoggerRepository repository, string loggerName, Level level, object message, Exception exception) { m_callerStackBoundaryDeclaringType = callerStackBoundaryDeclaringType; m_message = message; m_repository = repository; m_thrownException = exception; m_data.LoggerName = loggerName; m_data.Level = level; // Store the event creation time #if !NETCF m_data.TimeStamp = DateTime.Now; #else m_data.TimeStamp = DateTimeMs.NowMs; #endif } /* * patch to get from opennetcf blog */ using System; namespace log4net.Core { public class DateTimeMs { private static int m_offset = 0; private static long systemStartMS = 0; /* ticks correction constant (*1000). Default is 1000 - no correction */ public static long TimeScaleThousands { get; set; } static DateTimeMs() { DateTimeMs.TimeScaleThousands = 1000; Reset(); CalculateOffset(); } public static long TickCount { get { return ((long)Environment.TickCount) * DateTimeMs.TimeScaleThousands / 1000; } } public static void CalculateOffset() { int s = DateTime.Now.Second; while (true) { int s2 = DateTime.Now.Second; // wait for a rollover if (s != s2) { m_offset = (int)(DateTimeMs.TickCount % 1000); break; } } } public static void Reset() { systemStartMS = (DateTime.Now - new TimeSpan((long)(DateTimeMs.TickCount) * 10000)).Ticks / 10000; } public static void ResetTo(DateTime to) { systemStartMS = (to.Ticks / 10000 - (long)DateTimeMs.TickCount); } public static DateTime NowMs { get { // find where we are based on the os tick int tick = (int)(DateTimeMs.TickCount % 1000); // calculate our ms shift from our base m_offset int ms = (tick >= m_offset) ? (tick - m_offset) : (1000 - (m_offset - tick)); // build a new DateTime with our calculated ms // we use a new DateTime because some devices fill ms with a non-zero garbage value DateTime now = DateTime.Now; return new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second, ms); } } public static DateTime ToDateTime(long ts) { return new DateTime(ts * 10000); } /** * Number of milliseconds from 01.01.0001 */ public static long Now { get { return systemStartMS + DateTimeMs.TickCount; //return NowMs.Ticks / 10000; } } } } > Millisecond always return 0 in wince > ------------------------------------- > > Key: LOG4NET-412 > URL: https://issues.apache.org/jira/browse/LOG4NET-412 > Project: Log4net > Issue Type: Bug > Components: Appenders > Affects Versions: 1.3.0 > Environment: NETCF > Reporter: Son Tran > Priority: Trivial > Labels: DateTime, > > As I check the DateTime.Ticks is used in function > AbsoluteTimeDateFormatter.FormatDate always return 0 > work around by using Enviroment.TichCount. -- This message was sent by Atlassian JIRA (v6.2#6252)