Log4Net 是一套專業的 Logger, 之前比較常處理的是記錄一般資料型態的紀錄,如 String, Datetime等資料。這篇將針對如何處理 Guid (在 SQL Server 為 uniqueidentifier 的資料型態)來做討論.
開發環境 VS 2012, Log4Net 透過 Nuget 安裝的 2.0.3 版本, 資料庫是 SQL Server 2008 R2
在 Web.Confg 中 ADoNetAppender 的設定, 其中 ORG_ID 在 DB 中是 uniqueidentifier
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<connectionString value="data source=localhost;initial catalog=LOCAL_DB;integrated security=false;persist security info=True;User ID=user;Password=password"/>
<commandText value="INSERT INTO SYS_EVENT_LOG ([DATE],[THREAD],[LEVEL],[LOGGER], [LINE], [MESSAGE],[EXCEPTION], [USER_NAME], [CREATE_USER], [IP], [MACHINE_NAME], [ACCESS_MODE], [ORG_ID]) VALUES (@log_date, @thread, @log_level, @logger, @line, @message, @exception, @user_name, @create_user, @ip, @machine_name, @access_mode, @org)"/>
<bufferSize value="1"/>
<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="@line"/>
<dbType value="String"/>
<size value="10"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%line"/>
</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>
<parameter>
<parameterName value="@user_name"/>
<dbType value="String"/>
<size value="50"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{user_name}"/>
</layout>
</parameter>
<parameter>
<parameterName value="@create_user"/>
<dbType value="String"/>
<size value="50"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{create_user}"/>
</layout>
</parameter>
<parameter>
<parameterName value="@ip"/>
<dbType value="String"/>
<size value="30"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{ip}"/>
</layout>
</parameter>
<parameter>
<parameterName value="@machine_name"/>
<dbType value="String"/>
<size value="100"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{machine_name}"/>
</layout>
</parameter>
<parameter>
<parameterName value="@access_mode"/>
<dbType value="String"/>
<size value="1"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{access_mode}"/>
</layout>
</parameter>
<parameter>
<parameterName value="@org" />
<dbType value="Guid" />
<layout type="log4net.Layout.RawPropertyLayout">
<conversionPattern value="%property{org}" />
<key value="org" />
</layout>
</parameter>
</appender>
</log4net>
在 C#
User.BU = Guid.NewID(); // get a new GUID
log4net.GlobalContext.Properties["ip"] = user.LoginIP;
log4net.GlobalContext.Properties["machine_name"] = user.LoginIP;
log4net.GlobalContext.Properties["access_mode"] = "W";
log4net.GlobalContext.Properties["create_user"] = user.UserAccount;
log4net.GlobalContext.Properties["user_name"] = user.UserName;
log4net.GlobalContext.Properties["org"] = user.BU;
2014年7月28日 星期一
2014年7月19日 星期六
靈光一現
(right) off the top of one's head
Fig. without giving it too much thought or without precise knowledge. Mary: How much do you think this car would be worth on a trade? Fred: Well, right off the top of my head, I'd say about a thousand. Tom: What time does the morning train come in? Bill: Off the top of my head, I don't know.
See also: head, top
美國隊長2的一句對話
It's a great idea off the top of my head
Fig. without giving it too much thought or without precise knowledge. Mary: How much do you think this car would be worth on a trade? Fred: Well, right off the top of my head, I'd say about a thousand. Tom: What time does the morning train come in? Bill: Off the top of my head, I don't know.
See also: head, top
美國隊長2的一句對話
It's a great idea off the top of my head
2014年4月27日 星期日
差不多完成了
1) It's pretty much it.
2) That's about it.
3) That's pretty much it.
It's more or less complete
that's essentially all
That's exactly what it is
2) That's about it.
3) That's pretty much it.
It's more or less complete
that's essentially all
That's exactly what it is
2014年4月21日 星期一
公司請你來做什麼?
來源: 網路
請你來是解決問題而不是製造問題
如果你不能發現問題或解決不了問題,你本人就是一個問題
你能解決多大的問題,你就坐多高的位子
你能解決多少問題,你就能拿多少薪水
讓解決問題的人高升,讓製造問題的人讓位,讓抱怨問題的人下課
【問題就是你的機會】
1、公司的問題:就是你改善的機會;
2、客戶的問題:就是你提供服務的機會;
3、自己的問題:就是你成長的機會;
4、同事的問題:就是你提供支持建立合作機會;
5、領導的問題:就是你積極解決獲得信任的機會
6、競爭對手的問題:就是你變強的機會。
不要輕易離開團隊,否則你要從零做起:
1、不要老想著做不順就放棄,哪個團隊都有問題,哪個團隊都有優點。
2、跟對領導很重要,願意教你的,放手讓你做的領導,絕對要珍惜。
3、團隊的問題就是你脫穎而出的機會,抱怨和埋怨團隊就是打自己耳光,說自己無能,更是在放棄機會!
4、心懷感恩之心,感謝系統給你平台,感謝夥伴給你配合。
5、創造利潤是你存在的核心價值,創業不是做慈善。
6、遇到問題請先思考,只反映問題是初級水平,思考並解決問題才是高級水平。
誰能最後享受到勝利成果?
第一:能始終跟著團隊一起成長的人。
第二:對團隊的前景始終看好的人。
第三:在團隊不斷的探索中能找到自己位置的人。
第四:為了團隊新的目標不斷學習新東西的人。
第五:抗壓能力強且有耐性的人。
第六:與團隊同心同德、同舟共濟、同甘共苦的人
第七:不計較個人得失,顧全大局的人。
第八:雄心博大,德才兼備,有奉獻的人!
只為成功找方法,不為失敗找藉口
第一段
你的責任就是你的方向,
你的經歷就是你的資本,
你的性格就是你的命運。
第二段
複雜的事情簡單做,你就是專家;
簡單的事情重複做,你就是行家;
重複的事情用心做,你就是贏家。
第三段
美好是屬於自信者的,
機會是屬於開拓者的,
奇蹟是屬於執著者的!
你若不想做,總會找到藉口;
你若真想做,總會找到方法!
對領導而言:愛他就嚴格要求他!
1、對你有嚴格要求的領導,才是能真正幫助你成長的好領導,使我痛苦者,必使我強大!
2、任何強大公司都不會給下屬安全感,用最殘忍方式激發每個人變得強大,自強不息!
3、凡是想辦法給下屬安全感的公司都會毀滅的,因為再強大的人,在溫順的環境中都會失去狼性!
4、凡是想方設法逼出員工能力,開發員工潛力的公司都會升騰不息,因為在這種環境下,要么變成狼,要么被狼吃掉!
5、最不給員工安全感的公司,其實給了真正的安全感,因為逼出了他們的強大,逼出了他們的成長,也因此他們有了未來!
6、如果真的愛你的下屬,就考核他,要求他,高要求,高目標,高標準,逼迫他成長!
7、如果你礙於情面,低目標,低要求,低標准養了一群小綿羊、老油條,小白兔。這是對下屬最大的不負責任! 因為這只會助長他們的任性、嫉妒和懶惰。
請你來是解決問題而不是製造問題
如果你不能發現問題或解決不了問題,你本人就是一個問題
你能解決多大的問題,你就坐多高的位子
你能解決多少問題,你就能拿多少薪水
讓解決問題的人高升,讓製造問題的人讓位,讓抱怨問題的人下課
【問題就是你的機會】
1、公司的問題:就是你改善的機會;
2、客戶的問題:就是你提供服務的機會;
3、自己的問題:就是你成長的機會;
4、同事的問題:就是你提供支持建立合作機會;
5、領導的問題:就是你積極解決獲得信任的機會
6、競爭對手的問題:就是你變強的機會。
不要輕易離開團隊,否則你要從零做起:
1、不要老想著做不順就放棄,哪個團隊都有問題,哪個團隊都有優點。
2、跟對領導很重要,願意教你的,放手讓你做的領導,絕對要珍惜。
3、團隊的問題就是你脫穎而出的機會,抱怨和埋怨團隊就是打自己耳光,說自己無能,更是在放棄機會!
4、心懷感恩之心,感謝系統給你平台,感謝夥伴給你配合。
5、創造利潤是你存在的核心價值,創業不是做慈善。
6、遇到問題請先思考,只反映問題是初級水平,思考並解決問題才是高級水平。
誰能最後享受到勝利成果?
第一:能始終跟著團隊一起成長的人。
第二:對團隊的前景始終看好的人。
第三:在團隊不斷的探索中能找到自己位置的人。
第四:為了團隊新的目標不斷學習新東西的人。
第五:抗壓能力強且有耐性的人。
第六:與團隊同心同德、同舟共濟、同甘共苦的人
第七:不計較個人得失,顧全大局的人。
第八:雄心博大,德才兼備,有奉獻的人!
只為成功找方法,不為失敗找藉口
第一段
你的責任就是你的方向,
你的經歷就是你的資本,
你的性格就是你的命運。
第二段
複雜的事情簡單做,你就是專家;
簡單的事情重複做,你就是行家;
重複的事情用心做,你就是贏家。
第三段
美好是屬於自信者的,
機會是屬於開拓者的,
奇蹟是屬於執著者的!
你若不想做,總會找到藉口;
你若真想做,總會找到方法!
對領導而言:愛他就嚴格要求他!
1、對你有嚴格要求的領導,才是能真正幫助你成長的好領導,使我痛苦者,必使我強大!
2、任何強大公司都不會給下屬安全感,用最殘忍方式激發每個人變得強大,自強不息!
3、凡是想辦法給下屬安全感的公司都會毀滅的,因為再強大的人,在溫順的環境中都會失去狼性!
4、凡是想方設法逼出員工能力,開發員工潛力的公司都會升騰不息,因為在這種環境下,要么變成狼,要么被狼吃掉!
5、最不給員工安全感的公司,其實給了真正的安全感,因為逼出了他們的強大,逼出了他們的成長,也因此他們有了未來!
6、如果真的愛你的下屬,就考核他,要求他,高要求,高目標,高標準,逼迫他成長!
7、如果你礙於情面,低目標,低要求,低標准養了一群小綿羊、老油條,小白兔。這是對下屬最大的不負責任! 因為這只會助長他們的任性、嫉妒和懶惰。
2014年4月2日 星期三
Solve vs Resolve
網路來源
Generally, when it comes to problems, people use "solve" when it''s a problem that doesn't involve a disagreement with another person.
** e.g. if I was locked out of my house because I didn''t have my keys, I would work to find a way to SOLVE the problem by finding a way to get into my house.
Usually the word "resolve" is used with problems that involve other people and disagreements. If there is a misunderstanding or a difference of opinion as far as how something should be done or whether or not something should be done, people work together to "resolve" the issue.
** e.g. The council members RESOLVE to enact the law to protect the environment.
Generally, when it comes to problems, people use "solve" when it''s a problem that doesn't involve a disagreement with another person.
** e.g. if I was locked out of my house because I didn''t have my keys, I would work to find a way to SOLVE the problem by finding a way to get into my house.
Usually the word "resolve" is used with problems that involve other people and disagreements. If there is a misunderstanding or a difference of opinion as far as how something should be done or whether or not something should be done, people work together to "resolve" the issue.
** e.g. The council members RESOLVE to enact the law to protect the environment.
2014年3月12日 星期三
talk to you soon
其實see you later有點像是talk to you later
那個later只是表示anytime from now on
所以可以是10分鐘以後,也可以是10天,反正就是下次見到/說到話的時候
不過說see you soon/talk to you soon的時候,
有一點在某個時間expect to see you/talk to you的意思,
這就是為什麼如果你告訴別人你要十天後才從holiday回來,別人大概會說see you soon(因為知道了大約會看到你回來的時間)
那個later只是表示anytime from now on
所以可以是10分鐘以後,也可以是10天,反正就是下次見到/說到話的時候
不過說see you soon/talk to you soon的時候,
有一點在某個時間expect to see you/talk to you的意思,
這就是為什麼如果你告訴別人你要十天後才從holiday回來,別人大概會說see you soon(因為知道了大約會看到你回來的時間)
2014年3月9日 星期日
隨你便
在看 MATRIX 3時, 看到 Oracle 與 Neo 的對話
Oracle說: 你要不要坐下來?
Neo 說: 我站的就好
Oracle: Suit yourself
好奇的我就想, 這啥意思?
網路來源
我知道suit yourself是隨你便的意思
那請問be my guest和knock yourself out之間有什麼不同呢?
be my guest比較客氣, 如果有人問你, 我可不可以借用你的東西?
我可不可以嚐嚐你的食物? 你就可以說, "be my guest".
knock yourself out比較粗俗一點, 通常是很熟的朋友才會
這麼說, 而且我只聽男人這麼說, 沒聽過女人這麼說.
knock yourself out字面上的意思是, "把你自己打昏",
意思是, 隨便你做什麼都可以, 我不在乎.
譬如死黨來你家, 看到你新買的遊戲, 問你可不可以玩?
你若說knock yourself out, 不只是讓他玩,
而且他就算玩到三更半夜也無所謂.
或是死黨問你, 有啤酒喝嗎? 你若說knock yourself out,
就是讓他盡量喝, 喝醉了也無所謂.
Suit yourself跟這兩個的語氣有點不太一樣. Be my guest是客氣的,
歡迎的, knock yourself out不但歡迎而且很隨性豪氣,
但suit yourself卻是不太情願的. 通常是對方跟你的意見不合,
你是在不情願的情況下順對方的意的. 譬如你想出去跟朋友
聚會, 但女友不想跟你去, 說什麼太無聊, 不喜歡你的朋友之類,
說她寧可待在家看電視, 那你就可能丟下一句, "suit yourself",
隨你便, 然後自己一個人出門去.
Oracle說: 你要不要坐下來?
Neo 說: 我站的就好
Oracle: Suit yourself
好奇的我就想, 這啥意思?
網路來源
我知道suit yourself是隨你便的意思
那請問be my guest和knock yourself out之間有什麼不同呢?
be my guest比較客氣, 如果有人問你, 我可不可以借用你的東西?
我可不可以嚐嚐你的食物? 你就可以說, "be my guest".
knock yourself out比較粗俗一點, 通常是很熟的朋友才會
這麼說, 而且我只聽男人這麼說, 沒聽過女人這麼說.
knock yourself out字面上的意思是, "把你自己打昏",
意思是, 隨便你做什麼都可以, 我不在乎.
譬如死黨來你家, 看到你新買的遊戲, 問你可不可以玩?
你若說knock yourself out, 不只是讓他玩,
而且他就算玩到三更半夜也無所謂.
或是死黨問你, 有啤酒喝嗎? 你若說knock yourself out,
就是讓他盡量喝, 喝醉了也無所謂.
Suit yourself跟這兩個的語氣有點不太一樣. Be my guest是客氣的,
歡迎的, knock yourself out不但歡迎而且很隨性豪氣,
但suit yourself卻是不太情願的. 通常是對方跟你的意見不合,
你是在不情願的情況下順對方的意的. 譬如你想出去跟朋友
聚會, 但女友不想跟你去, 說什麼太無聊, 不喜歡你的朋友之類,
說她寧可待在家看電視, 那你就可能丟下一句, "suit yourself",
隨你便, 然後自己一個人出門去.
訂閱:
文章 (Atom)