夢想號黃包車wei.lee net-home

          Have my best life at SZ....................

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            6 隨筆 :: 3 文章 :: 6 評論 :: 0 Trackbacks

          2006年3月26日 #

          這段時間有機會接觸DOT NET方面的項目,開始DOT NET的新生涯.學習DOT NET首先當然要從microsoft的官方例子學起哦,我首先選擇了petshop和vs2003自帶的Duwamish 7.0(可以在vs安裝的路徑上找到的\Microsoft Visual Studio .NET 2003\Enterprise Samples).當然我會選擇喜歡的C#版本來學習.萬事起頭難,我一裝petshop,事情就來了,但是小小的問題是難不著我的.

          安裝配置:
          ?OS :? WIN2003
          DEV:? VS2003
          IIS6.0
          SQLSERVER2000 Enterprise version

          Duwamish 7.0的安裝完運行沒問題,但是petshop安裝后出現SQLException,我完全安裝ReadMe.rtf的步驟來安裝的,安裝過程中輸入的sql帳號密碼都是沒錯的,因為數據庫MSPetShop,MSPetShopOrders能夠在sqlserver2000看到.具體錯誤如下:
          petshop_sqlexception.png

          我查看過安裝路徑下的:\ConfigTool里的App.config文件發現配置文件的user和password都沒有在sqlserver配置到,所以我在sqlserver2000里的安全性-->登陸里添加兩個用戶:MSPetShop 和 MSPetShopOrders; 密碼都是:password;同時分配該用戶訪問上面的兩個數據庫,這樣重新運行petshop,一切都很正常地跑起來了...........:)
          petshop_sqlsetting.png


          petshop_sqlsetting2.png?

          輸入http://localhost/MSPetShop/?
          petshop_0.png


          petshop_1.png?
          輸入http://localhost/Duwamish7/
          Duwamish7.png
          開始學習DOT NET?拉,真是激動!就算獻身給microsoft一輩子都是值得的:)
          posted @ 2006-05-12 15:16 Wei.Lee 閱讀(892) | 評論 (0)編輯 收藏

               摘要: Item1#: Repository 組件在不同版本的不同之處? Answer : Repository ...  閱讀全文
          posted @ 2006-05-08 19:16 Wei.Lee 閱讀(855) | 評論 (0)編輯 收藏

          一般我們都會使用數據庫和文件作為log的輸出介質,下面是我在項目實踐中總結到的經驗:
          1 .ADONetAppender
          ( 1 )、 MS SQL Server
          define the table such as:
          CREATE TABLE [dbo].[Log] (?
          ?[Id] [int] IDENTITY (1, 1) NOT NULL,
          ?[Date] [datetime] NOT NULL,
          ?????? [Thread] [varchar] (255) NOT NULL,
          ?????? [Level] [varchar] (50) NOT NULL,
          ?????? [Logger] [varchar] (255) NOT NULL,
          ?????? [Message] [varchar] (4000) NOT NULL,
          ?????? [Exception] [varchar] (2000) NULL
          )

          <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
          ?????? <bufferSize value="100" />
          ?????? <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
          ?????? <connectionString value="data source=[database server];initial catalog=[database name];integrated security=false;persist security info=True;User ID=[user];Password=[password]" />
          ?????? <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
          ?????? <parameter>
          ????????????? <parameterName value="@log_date" />
          ????????????? <dbType value="DateTime" />
          ????????????? <layout type="log4net.Layout.RawTimeStampLayout" />
          ?????? </parameter>
          ?????? <parameter>
          ????????????? <parameterName value="@thread" />
          ????????????? <dbType value="String" />
          ????????????? <size value="255" />
          ????????????? <layout type="log4net.Layout.PatternLayout">
          ???????????????????? <conversionPattern value="%thread" />
          ????????????? </layout>
          ?????? </parameter>
          ?????? <parameter>
          ????????????? <parameterName value="@log_level" />
          ????????????? <dbType value="String" />
          ????????????? <size value="50" />
          ????????????? <layout type="log4net.Layout.PatternLayout">
          ???????????????????? <conversionPattern value="%level" />
          ????????????? </layout>
          ?????? </parameter>
          ?????? <parameter>
          ????????????? <parameterName value="@logger" />
          ????????????? <dbType value="String" />
          ????????????? <size value="255" />
          ????????????? <layout type="log4net.Layout.PatternLayout">
          ???????????????????? <conversionPattern value="%logger" />
          ????????????? </layout>
          ?????? </parameter>
          ?????? <parameter>
          ????????????? <parameterName value="@message" />
          ????????????? <dbType value="String" />
          ????????????? <size value="4000" />
          ????????????? <layout type="log4net.Layout.PatternLayout">
          ???????????????????? <conversionPattern value="%message" />
          ????????????? </layout>
          ?????? </parameter>
          ?????? <parameter>
          ????????????? <parameterName value="@exception" />
          ????????????? <dbType value="String" />
          ????????????? <size value="2000" />
          ????????????? <layout type="log4net.Layout.ExceptionLayout" />
          ?????? </parameter>
          </appender>
          ( 2 )、 MS Access? please reference the SDK of Log4net document???
          ( 3 )、 Oracle9i???????????????????????????????????? log4net/release/config-examples.html
          ( 4 )、 Oracle8i
          ( 5 )、 DB2

          2 、 FileAppender
          <appender name="FileAppender" type="log4net.Appender.FileAppender">
          ????? <file value="log-file.txt" />
          ???? <appendToFile value="true" />
          ???? <layout type="log4net.Layout.PatternLayout">
          ???? <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
          </layout>
          </appender>

          4.? RemotingAppender
          傳送日志事件到達一個特定的接受器,sink定義了這個接受器的地址,lossy定義了沒有丟棄事件,bufferSize 定義了一個black的由95個事件打包發送的,而onlyFixPartialEventData可以忽律一些特定的事件。
          <appender name="RemotingAppender" type="log4net.Appender.RemotingAppender" >
          ?????? <sink value="tcp://localhost:8085/LoggingSink" />
          ?????? <lossy value="false" />
          ?????? <bufferSize value="95" />
          ????? <onlyFixPartialEventData value="true" />
          </appender>

          5.? RollingFileAppender
          由于定義了staticLogFileName 為true,以我的理解就是定位保存的log文件個數為10個(maxSizeRollBackups),同時設定了每個文件的大小為100KB,所以一直都保持有10個文件。RollingStyle設定rolling的觸發器。
          Eg1:
          <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
          ???? <file value="log.txt" />
          ??? <appendToFile value="true" />
          ??? <rollingStyle value="Size" />
          ?? <maxSizeRollBackups value="10" />
          ?? <maximumFileSize value="100KB" />
          ?? <staticLogFileName value="true" />
          ?? <layout type="log4net.Layout.PatternLayout">
          ?? <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout>
          </appender>

          ? eg2:?
          <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
          ?????? <file value="logfile" />
          ?????? <appendToFile value="true" />
          ?????? <rollingStyle value="Date" />
          ?????? <datePattern value="yyyyMMdd-HHmm" />
          ?????? <layout type="log4net.Layout.PatternLayout">
          ????????????? <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
          ?????? </layout>
          </appender>

          eg3:

          <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
          ?????? <file value="logfile" />
          ?????? <appendToFile value="true" />
          ?????? <rollingStyle value="Composite" />
          ?????? <datePattern value="yyyyMMdd" />
          ?????? <maxSizeRollBackups value="10" />
          ?????? <maximumFileSize value="1MB" />
          ?????? <layout type="log4net.Layout.PatternLayout">
          ????????????? <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
          ????? </layout>
          </appender>

          6.? UdpAppender
          可以發送到遠程地址的特定端口
          <appender name="UdpAppender" type="log4net.Appender.UdpAppender">
          ?????? <localPort value="8080" />
          ?????? <remoteAddress value="224.0.0.1" />
          ?????? <remotePort value="8080" />
          ?????? <layout type="log4net.Layout.PatternLayout, log4net">
          ????????????? <conversionPattern value="%-5level %logger [%property{NDC}] - %message%newline" />
          ?????? </layout>
          </appender>?
          log4net?的學習暫時告一段落了,希望能夠進一步對log4j學習,現在我越來越喜歡.net的東西了,再也不會感覺到很別扭!希望自己可以很快地強大起來!!!?

          posted @ 2006-03-29 18:22 Wei.Lee 閱讀(1287) | 評論 (0)編輯 收藏

          ???? 日志部分在程序中占了4%,有利于幫助我們很快地得到我們需要的調試信息,找到問題的根源盡快解決問題,從而降低我們的維護成本。這幾天一直斷斷續續地學習Log4net部分,由于知道自己在一個比較長的時間必須去使用.net的部分(HA Project and LIS Project),沒辦法,只有硬著頭皮死肯:),不過也讓我見識不少呢!log4net是appache開源的一個杰作,和log4J很相象,如同孿生的兄弟一樣,基本的概念原理都是一樣的,她主要應用在.net上的。下面是我一些收集的資料,同時也是我在開發過程中的一些經驗總結。稍后也會把一些實際項目的經驗記錄下來,和使用Log4J的相關內容。

          Log4net
          主要有四個組件。分別是Logger(記錄器),Repository(),Appender(附著器)Layout(布局)。??

          Logger 定義與用途:

          Logger 是應用程序需要交互的主要組件,它用來產生日志消息。產生的日志消息并不直接顯示,還要預先經過 Layout 的格式化處理后才會輸出。

          Root 是一個默認的 Logger ,當一個 root Logger 內容配置一致的時候就會記錄兩條相同的記錄,當在配置文件中找不到 logger 的名字時候,就會使用root的配置。?
          ?

          Repository 定義與用途:

          Repository 主要用于負責日志對象組織結構的維護?,F在 已經使用LogManager類來維護日志對象組織。

          ?

          Appender 定義及用途:

          ?? 定義輸出介質,可以把多個 Aappender 附加到一個日志對象中,?一個Appender對象缺省地把所有的日志事件傳遞到輸出流中,我們可以通過Aappender Filters來過濾剩下我們需要的部分。分別有級別過濾(定義級別區間),字符串過濾,可以定義多個filter。such as :LevelMatchFilter、LevelRangeFilter、MDCFilter、NDCFilter、 StringMatchFilter.

          ?

          Layout 定義與用途

          Layout 組件用于向用戶顯示最后經過格式化的輸出信息。可以是線性的或一個 XML 文件。 Layout 組件和一個 Appender 組件一起工作。也就是說一個 appender 對象 只能對應一個 layout 對象。

          ?

          ?

          Log4net DEBUG 信息分級:

          一共有七級

          級別
          允許方法

          Boolean 屬性

          優先級別

          ?

          OFF (拒絕所有的日志請求) ???????????????????? FATAL???????????????????????????????????? ERROR??

          ? null?????????????????????????????????????????????????????????????????? ?void Fatal(...);??????????????????????????? void Error(...);

          ? null??????????????????????????????????????????????????????????????? ??? bool IsFatalEnabled;????????????????? bool IsErrorEnabled;?

          ?Highest????????????????????????????????????????????????????????????? second?????????????????????????????????????? three

          ?

          ?WARN???????????????????????????????????????????????????????????? INFO????????????????????????????????????????DEBUG

          void Warn(...);??????????????????????????????????????????????????? void Info(...);?????????????????????????????void Debug(...);

          bool IsWarnEnabled;? ????????????????????????????????????????bool IsInfoEnabled;???????????????????bool IsDebugEnabled;

          four????????????????????????????????????????????????????????????????????five???????????????????????????????????????????six

          ?

          ALL (允許所有的日志請求)

          ?Null

          ?Null

          ?Lowest

          ?

          Log4net 配置方式:

          1. 在單獨文件里配置(推薦):改變配置不需要重新編譯代碼,同時也可以在程序運行的過程中修改代碼。

          2. 在程序代碼中配置

          ?

          關聯配置文件:

          log4net 框架使用 log4net.Config.DOMConfiguratorAttribute log4net.Config.XmlConfigurator 在程序集的級別上定義配置文件。方法有多種的:
          1
          .可以在項目的 AssemblyInfo.cs 文件里添加以下的語句

          ? [assembly:log4net.Config.XmlConfigurator(ConfigFile="filename", ? ConfigFileExtension="ext",Watch=true/false)]

          其中 configFile 設定了配置文件的文件名,路徑,擴展名

          configFileExtension 設定了被編譯的文件使用擴展名字,默認為 config

          但是configFileExtension與configFile不能同時使用。在這里我們可以關聯我們手動配置的文件,而不使用.net給我們的應用程序配置文件。
          eg:
          [assembly:log4net.Config.DOMConfigurator(ConfigFile="/Projects/Regular/bin/config/App.log.conf.xml",Watch=true)]?

          2 .可以不帶參數應用 DOMConfiguratio():

          ?

          ?[assembly: log4net.Config.DOMConfigurator()]

          3. 也可以在程序代碼中用 DOMConfigurator 類打開配置文件。類的構造函數需要一個 FileInfo 對象作參數,以指出要打開的配置文件名。

          log4net.Config.DOMConfigurator.Configure(

          ?

          ? new FileInfo("TestLogger.Exe.Config"));

          ?

          創建日志對象:

          當日志對象沒有在配置文件中定義的話,就會使用 root 的祖父節點。

          Log4net.ILog log = Log4net.LogManager.GetLogger("MyLogger");

          ?

          輸出日志信息:

          可以使用輸出日志的幾種方式:fatal();error();warn();info();debug();

          if (log.IsDebugEnabled) log.Debug("message");

          ?

          ?

          DEBUG 輸出格式的意義:

          Eg

          <param name="ConversionPattern"

          ?? value="%d [%t] %-5p %c [%x] - %m%n"

          ??????? />

          %m(message): 輸出的日志消息,如 ILog.Debug( ) 輸出的一條消息

          %n(new line): 換行

          %d(datetime): 輸出當前語句運行的時刻

          %r(run time): 輸出程序從運行到執行到當前語句時消耗的毫秒數

          %t(thread id): 當前語句所在的線程 ID

          %p(priority): 日志的當前優先級別,即 DEBUG 、 INFO 、 WARN …等

          %c(class): 當前日志對象的名稱,例如:

          ?????? 模式字符串為: %-10c -%m%n

          ?????? 代碼為:

          ILog log=LogManager.GetLogger(“Exam.Log”);

          log.Debug(“Hello”);

          ??? 則輸出為下面的形式:

          Exam.Log?????? - Hello

          %L :輸出語句所在的行號 。包括類目名、發生的線程,以及在代碼中的行數。

          %F :輸出語句所在的文件名

          %- 數字:表示該項的最小長度,如果不夠,則用空格填充

          例如,轉換模式為 %r [%t]%-5p %c - %m%n PatternLayout 將生成類似于以下內容的輸出:

          176 [main] INFO? org.foo.Bar - Located nearest gas station.?
          ?(未完待續)

          posted @ 2006-03-28 22:17 Wei.Lee 閱讀(1464) | 評論 (0)編輯 收藏

          ???? ? 很多次在夢里夢見到自己身處廣州,醒來的時候發覺眼淚已經流淌到面夾。不是我的懦弱,不是我的癡情,是一種感覺,廣州已經給我一個家的感覺拉。畢竟在那里生活了5年,在那里經歷了我的大學生涯,開始了我IT的生活,在那里有高中最好的朋友,有很多大專的同學,本科的同學,有啊輝等這樣的兄弟。太多了,讓我難以忘懷!
          ???? 還記得環市動路我們的校園,還記得曾經住過的208、203,一起同居過的同學都已經已經離得很遠很遠拉。自己何嘗不是呢,為了更好發展自己為了自己的夢,只身來到深圳這個陌生的地方。每次的轉折都是從痛開始的,從睡地板到睡床,從一無所有,到建造自己的小窩。這些苦都算不了什么,我堅信好的生活已經離我不遠。
          ???? 幾乎忘記**這個朋友,上個星期收到巨的郵件,說一生碰到我一次已經很幸運拉,確實自己還是個很單純的小孩子,為了朋友,我可以盡自己的能力去幫,這些算不了什么。謝謝巨對我如此的好評,但是我還是橫下心來不回郵件了,畢竟我們只是普通的朋友,剩下的日子只能夠巨自己去面對,我也自己面對自己的生活。當我離開廣州的時候,也意味我新的生活開始了。我不想帶著太多的負累走自己的一生,所以我越來越討厭依賴我的人,除了我家人。我知道巨是鼓著很大的勇氣發這個郵件給我的,但是很遺憾,很多謝你記得我的生日,這個確實令我很感動!
          ???? 還記得英語四級考試給我的痛嗎?對于它好象在給我一個很大的啟示。是不是自己個性有太不好的地方,有一種說法:“有心栽花,花不開,無心插柳,柳成陰”。反思自己給自己太多的壓力了,很多結果都是不如意的。還記得初中一個老師很奇怪地問我:“啊偉,我不明白你怎么每次見你都是笑的,是不是有什么很高興啊?”,我還是以笑容回答了他。但是我現在卻把自己樂觀的情緒磨滅曬拉,更多的是放不開,是壓力!是時候自己該反省反省了!不過我還是堅信一個優秀的人肯定有很多優秀的習慣,所以我會努力去養成這些習慣,細節和大局都要做好,我很快會是一個優秀的人,我很快會實現自己的夢想!
          posted @ 2006-03-26 10:47 Wei.Lee 閱讀(329) | 評論 (3)編輯 收藏

          主站蜘蛛池模板: 连平县| 南华县| 广饶县| 仪征市| 济源市| 江山市| 云南省| 南皮县| 望城县| 成都市| 澄城县| 佛坪县| 南江县| 台江县| 沅陵县| 华蓥市| 顺昌县| 乌兰察布市| 和平县| 泰顺县| 蒙自县| 江油市| 开化县| 清原| 丰城市| 库尔勒市| 合山市| 吴旗县| 长乐市| 清新县| 克拉玛依市| 隆回县| 泸水县| 文安县| 阿荣旗| 龙泉市| 姜堰市| 新沂市| 夏津县| 利津县| 通河县|