2013-07-26 31 views
0

我们有一个将信息记录到数据库中的应用程序,如果有一个erorr,我们将它记录在日志文件中。我们的用户遍布全球。如果有事情发生,我们希望记录问题的时间戳,但我们需要统一时间戳,这意味着香港和加利福尼亚州的某个人应该具有相同的时间戳,以及适当的时区偏移量。我不知道如何在CF中做到这一点。Coldfusion日志文件和时区/区域设置

处理日期一直是我的一周技能集,并希望得到一些帮助找出这一点。

这里是写出来的日志文件

<cftry> 
... insert into db here ... 
    <cfcatch type="any"> 
     <cfset error_msg = '#createodbcdatetime(now())#|#cfcatch.Message#|#cfcatch.Detail#|#cgi.HTTP_REFERER#|#cgi.SERVER_NAME#|#cgi.SCRIPT_NAME#|#cgi.QUERY_STRING#'> 
     <cftry> 
      <cfif FileExists(ExpandPath(#log_name#))> 
       <cflock name="WebSiteErrorLog_Lock" type="exclusive" timeout="30"> 
        <cffile action="append" addnewline="yes" file="#currentDirectory##log_name#" mode="777" output="#error_msg#"> 
       </cflock> 
      <cfelse> 
       <cflock name="WebSiteErrorLog_Lock" type="exclusive" timeout="30"> 
        <cffile action="write" addnewline="yes" file="#currentDirectory##log_name#" mode="777" output="#error_msg#"> 
       </cflock> 
      </cfif> 
     <cfcatch type="any"></cfcatch> 
    </cftry> 
</cfcatch> 

的代码,但此行是probablly一切真的需要这太问题:

<cfset error_msg = '#createodbcdatetime(now())#|#cfcatch.Message#|#cfcatch.Detail#|#cgi.HTTP_REFERER#|#cgi.SER 

TIA

回答

0

我很好奇,你使用ColdFusion 9吗?因为您可能想要考虑在您的Application.cfc中实现OnError函数。这可能比这种不断的Try-Catch方法更方便一些。

这就是说,下面的函数将返回格式化的UTC时间。我认为我从此网站上的其他人的回答中偷了它。

<cffunction name="getUTCTime" access="public"> 
    <cfscript> 
     var serverTime=now(); 
     var utcTime=GetTimeZoneInfo(); 
     var utcStruct=structNew(); 
     utcStruct.Hour=DatePart("h", serverTime); 
     utcStruct.Minute=DatePart("n", serverTime); 
     utcStruct.Hour=utcStruct.Hour + utcTime.utcHourOffSet; 
     utcStruct.Minute=utcStruct.Minute + utcTime.utcMinuteOffSet; 
     if (utcStruct.Minute LT 10) utcStruct.Minute = "0" & utcStruct.Minute; 
    </cfscript> 
    <cfreturn utcStruct.Hour & ":" & utcStruct.Minute> 
</cffunction> 

更新:

作为评价所提到的,上述代码是不必要的和越野车。它最好使用内置dateConvert()功能(因为至少MX7提供):

<cfset timeString = timeFormat(dateConvert("local2utc", now()), "HH:mm")> 
+0

的应用程序是一个较旧的应用程序并且不设置与的Application.cfc – HPWD

+0

哦。这是令人失望的..但功能应该仍然工作,至少在CF8和更高版本.. – XaxD

+1

啊,你是绝对正确的!我能够在我们正在运行的CF版本中使用它。谢谢! – HPWD