log4net을 이용한 Logging

log4net을 이용한 Logging
Apache log4net은 다양한 출력 타겟으로 로깅을 할 수 있는 .NET용 오픈소스 라이브러리이다. log4net은 Java에서 사용하는 log4j 라이브러리를 포팅한 것이다. log4net을 사용하여 로깅을 하기 위해서는 일반적으로 다음과 같은 절차를 따른다.

  1. log4net을 NuGet에서 다운받는다. 다운로드가 완료되면 자동으로 log4net 이 References 에 추가된다.PM> Install-Package log4net
    log4net는 아래 그림과 같이 여러 네임스페이스들로 나뉘어지고 각 네임스페이스에는 여러 클래스들을 제공하고 있다.
    log4net 네임스페이스
  2. 두번째로 App.config 파일에 log4net 관련 기본 셋팅들을 설정한다. (주: Desktop Application인 경우는 App.config를 를 사용하고, 웹인 경우는 Web.config를 사용. 하지만, 아래 Step 3의 XmlConfigurator 안에서 임의로 Config 파일을 지정할 수도 있음. 이렇게 Config 파일을 이용하지 않고 물론 C#에서 직접 핸들링할 수도 있음)App.config 설정은 먼저 configSections 안에 log4net 섹션 (주: 임의명칭 사용가능)을 추가하고 Type을 아래와 같이 Log4NetConfigurationSectionHandler 클래스로 지정한다.
    log4net은 콘솔, 파일, 데이타베이스 등 여러 곳에 로그를 출력시킬 수 있는데, 이들 각각의 출력 타겟을 appender로 지정한다. 예를 들어, 아래 샘플은 콘솔 로깅을 위한 appender (ConsoleAppender로)를 지정하고 있는데, 파일 로깅을 위해서는 FileAppender를, DB 로깅을 위해서는 AdoNetAppender 등을 지정하면 된다. 물론 복수 타겟으로 로깅할 수도 있다. appender에는 임의의 이름 (여기서는 ConsoleLog)을 지정하고 해당 로그 타켓의 Type을 지정한다. appender 안에는 여러 옵션들을 지정할 수 있는데, 아래의 경우 layout을 지정하고 있다. 이 layout의 ConversionPattern 옵션은 로그 출력 형식을 지정하게 되는데, 아래 예제에서는 현재 날짜/시간을 나타내는 %date과 로그 메서드 호출로부터 전달되는 메시지인 %message를 사용하여 출력 포맷을 정하고 있다.
    마지막으로 이러한 설정들 밑에 root 노드가 있는데, 여기서는 일반적으로 어느 레벨까지 출력한 것인가와 어떤 타겟에 출력할 것인가를 지정하게 된다. 레벨은 ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF 등 7가지가 있는데, ALL은 모두 로깅한다는 것을 의미하며, OFF 는 아무것도 로깅하지 않는다는 것을 의미한다. 따라서 실제 사용되는 로깅 레벨은 나머지 5가지로 봐도 무방하다. 아래 예제에선 DEBUG 레벨 이상을 출력하도록 하고 있는데, DEBUG 레벨이 가장 낮은 레벨이므로 사실상 모두 로깅하는 것과 같다. level 노드 밑에 있는 appender-ref 노드는 실제 타겟으로 사용할 appender 를 지정하게 된다. appender 노드를 설정했다하더라도 appender-ref 노드에서 해당 appender 명을 추가하지 않으면 해당 타겟으로 로깅을 수행하지 않는다.

    예제

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
        </configSections>
      
        <log4net>
        <appender name="ConsoleLog" type="log4net.Appender.ConsoleAppender">
            <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%date : %message %newline"/>
            </layout>
        </appender>
        <root>
            <level value="DEBUG"/>
            <appender-ref ref="ConsoleLog"/>
        </root>
        </log4net>
      
    </configuration>
    
  3. 다음으로 소스코드에서 아래와 같이 XmlConfigurator()를 실행해야 하는데, 이는 XML Config 파일 (예: App.config)을 사용하여 log4net 관련 기본 셋팅들을 사용하도록 한다. 이 문장은 프로그램 내에서 한번만 실행하면 되며, 특별히 어떤 소스파일에 넣어야 한다는 규칙은 없지만, 주로 AssemblyInfo.cs나 Main() 메서드가 있는 소스 파일(예: Program.cs)에 넣어 준다.
    [assembly: log4net.Config.XmlConfigurator(Watch = true)]
    // 임의의 Config 파일을 지정할 경우:
    // [assembly: log4net.Config.XmlConfigurator(ConfigFile = "My.config", Watch = true)]
    
  4. 위에서 여러 log4net 관련된 기본 셋팅이 완료되면, 이제 C# 코드에서 LogManager.GetLogger()를 통해 ILog 인터페이스를 얻어 log4net 기능을 사용하면 된다.LogManager.GetLogger()를 매번 사용해도 되지만, 일반적으로 아래 예제와 같이 Static 필드를 만들어 사용하면 편리하다. LogManager.GetLogger()는 ILog를 인터페이스를 리턴하고 ILog는 Debug(), Info(), Warn(), Error(), Fatal() 등과 같은 레벨별 로깅 메서드들을 가지고 있다.

    예제

    using System;
    using log4net;  // log4net 네임스페이스
    // 프로그램 내 한번만 지정
    [assembly: log4net.Config.XmlConfigurator(Watch = true)]  
    namespace LogApp
    {
        class Program
        {
            // 로거 ILog 필드
            private static ILog log = LogManager.GetLogger("Program");
            static void Main(string[] args)
            {
                // 로거 사용 : 5가지 레벨의 메서드들
                log.Debug("Main() started"); 
                log.Info("My Info");
                log.Warn("My Warning");
                log.Error("My Error");
                log.Fatal("My Fatal Error");
            }
        }
    }
    
파일 로깅 (File Logging)
로그 데이타를 파일에 출력하기 위해서는 App.config (혹은 Web.config)에 아래와 같이 FileAppender 를 추가하고, root/appender-ref 에 해당 appender를 추가하면 된다. 아래 예제에서는 level을 Info 로 지정하였으므로, INFO 레벨 이상만 로그파일 Logs.txt에 로깅된다.

예제

<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
  <param name="File" value="Logs.txt" />
  <param name="AppendToFile" value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%date [%logger] %message %newline" />
  </layout>
</appender>
<root>
  <level value="Info"/>
  <appender-ref ref="LogFileAppender"/>
</root>
</log4net>

데이타베이스 로깅 (DB Logging)
로그 데이타를 DB에 출력하기 위해서는 App.config (혹은 Web.config)에 아래와 같이 AdoNetAppender 를 추가하고, root/appender-ref 에 해당 appender를 추가하면 된다. DB는 ADO.NET이 지원하는 모든 DB를 지원한다.
DB 로깅을 위해서는 미리 로그 테이블을 생성해 두어야 한다. 또한, App.config 파일에 해당 로그 테이블에 대한 INSERT문과 컬럼 데이타 타입을 appender 노드에 아래 예와 같이 정의해 주어야 한다.
아래 예제의 첫번째 CREATE TABLE문은 SQL Server에 Logs 라는 테이블을 만들 때 사용하는 SQL문 예제이다. 그리고 다음 두번째는 해당 테이블을 사용하는 AdoNetAppender를 App.config에 정의한 예이다.

예제

-- Logs  
CREATE TABLE [Logs]
(
[Id] INT IDENTITY(1, 1) NOT NULL,
[CreateDate] DATETIME NOT NULL,
[Level] VARCHAR(50) NULL,
[Message] VARCHAR(max) NULL
)
<log4net>
  <appender name="DBAppender" type="log4net.Appender.AdoNetAppender">
    <bufferSize value="1" />
    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.50727.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <connectionString value="Data Source=(local);Initial Catalog=MyDB;Integrated Security=SSPI;" />
    <commandText value="INSERT Logs(CreateDate,Level,Message) VALUES (@CreateDate,@Level,@Message)" />
    <parameter>
      <parameterName value="CreateDate" />
      <dbType value="DateTime" />
      <layout type="log4net.Layout.RawTimeStampLayout" />
    </parameter>
    <parameter>
      <parameterName value="@Level" />
      <dbType value="String" />
      <size value="50" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%level" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@Message" />
      <dbType value="String" />
      <size value="4000" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%message" />
      </layout>
    </parameter>
  </appender>
  <root>
    <level value="DEBUG"/>    
    <appender-ref ref="DBAppender" />
  </root>
</log4net>

“log4net을 이용한 Logging”의 277개의 댓글

  1. My developer is trying to convince me to move to .net from PHP.
    I have always disliked the idea because of the costs. But he’s tryiong none the less.

    I’ve been using WordPress on a variety of websites
    for about a year and am concerned about switching to another platform.
    I have heard great things about blogengine.net.
    Is there a way I can transfer all my wordpress posts into it?
    Any help would be really appreciated!

  2. Hey There. I discovered your weblog using msn. This is a really neatly written article.

    I’ll be sure to bookmark it and return to learn more of your useful info.
    Thank you for the post. I’ll definitely comeback.

  3. I just want to tell you that I am just very new to blogging and definitely liked this web site. Almost certainly I’m likely to bookmark your website . You surely have outstanding well written articles. Thank you for sharing your blog site.

  4. A remarkable share, I simply given this onto a coworker that was doing a little evaluation on this. And also he as a matter of fact purchased me morning meal since I discovered it for him. smile. So let me reword that: Thnx for the treat! However yeah Thnkx for spending the moment to discuss this, I feel strongly concerning it and also love learning more on this topic. When possible, as you end up being competence, would certainly you mind updating your blog with more details? It is extremely handy for me. Huge thumb up for this post!

  5. Hello there! Quick question that’s totally off topic. Do you know how to make your site mobile friendly? My weblog looks weird when browsing from my iphone 4. I’m trying to find a template or plugin that might be able to resolve this problem. If you have any recommendations, please share. Thanks!

  6. First off I would like to say awesome blog! I had a quick question which I’d like to ask if you don’t mind. I was interested to know how you center yourself and clear your head prior to writing. I have had a hard time clearing my thoughts in getting my ideas out. I do enjoy writing however it just seems like the first 10 to 15 minutes are lost just trying to figure out how to begin. Any ideas or tips? Thanks!

  7. Oh my goodness! an incredible article dude. Thank you Nonetheless I am experiencing subject with ur rss . Don’t know why Unable to subscribe to it. Is there anyone getting an identical rss downside? Anybody who knows kindly respond. Thnkx

  8. There are absolutely a lot of details like that to think about. That is an excellent point to bring up. I supply the thoughts over as basic inspiration however clearly there are inquiries like the one you bring up where one of the most vital thing will certainly be operating in sincere good faith. I don?t recognize if best practices have arised around things like that, but I make certain that your work is clearly recognized as a level playing field. Both boys as well as women feel the influence of just a moment?s pleasure, for the remainder of their lives.

  9. You are so cool! I do not suppose I have read something like that before. So great to find another person with unique thoughts on this topic. Seriously.. many thanks for starting this up. This web site is one thing that is required on the internet, someone with a bit of originality!

  10. Oh my goodness! an amazing article dude. Thanks Nevertheless I am experiencing issue with ur rss. Don?t understand why Incapable to register for it. Exists anybody obtaining identical rss issue? Any person who knows kindly react. Thnkx

  11. Hi, I do think this is an excellent site. I stumbledupon it 😉 I’m going to come back once again since i have book-marked it. Money and freedom is the best way to change, may you be rich and continue to guide others.

  12. The next time I read a blog, I hope that it doesn’t fail me as much as this particular one. After all, Yes, it was my choice to read through, but I truly thought you would probably have something interesting to talk about. All I hear is a bunch of whining about something you could possibly fix if you were not too busy looking for attention.

  13. Hi there! This article could not be written any better! Going through this post reminds me of my previous roommate! He always kept talking about this. I most certainly will forward this post to him. Fairly certain he will have a very good read. Many thanks for sharing!

  14. When I originally commented I appear to have clicked the -Notify me when new comments are added- checkbox and now whenever a comment is added I get four emails with the same comment. There has to be a way you are able to remove me from that service? Thank you!

  15. You are so awesome! I don’t suppose I’ve truly read through something like this before. So nice to find somebody with a few unique thoughts on this issue. Seriously.. many thanks for starting this up. This web site is something that is required on the web, someone with a little originality!

  16. The very next time I read a blog, I hope that it does not fail me just as much as this one. I mean, Yes, it was my choice to read through, however I truly believed you would probably have something interesting to talk about. All I hear is a bunch of complaining about something you can fix if you weren’t too busy searching for attention.

  17. After looking over a number of the articles on your web site, I really appreciate your technique of writing a blog. I added it to my bookmark site list and will be checking back in the near future. Take a look at my website as well and let me know your opinion.

  18. That is a really good tip particularly to those fresh to the blogosphere. Short but very precise information… Many thanks for sharing this one. A must read post!

  19. Good post. I learn something new and challenging on blogs I stumbleupon every day. It’s always useful to read through articles from other authors and practice something from other web sites.

  20. A motivating discussion is definitely worth comment. I believe that you need to publish more about this subject matter, it may not be a taboo matter but generally people do not talk about such topics. To the next! Many thanks!!

  21. Can I simply say what a relief to uncover somebody who genuinely knows what they’re discussing on the net. You certainly understand how to bring a problem to light and make it important. A lot more people should read this and understand this side of your story. I was surprised you are not more popular given that you definitely possess the gift.

  22. This is the perfect site for anyone who wishes to understand this topic. You realize a whole lot its almost hard to argue with you (not that I actually will need to…HaHa). You certainly put a fresh spin on a topic that’s been written about for many years. Wonderful stuff, just wonderful!

  23. Oh my goodness! Awesome article dude! Many thanks, However I am encountering troubles with your RSS. I don’t know the reason why I can’t join it. Is there anybody else getting the same RSS problems? Anyone that knows the solution will you kindly respond? Thanx!!

  24. Howdy, I think your website might be having internet browser compatibility problems. When I take a look at your web site in Safari, it looks fine however, when opening in IE, it has some overlapping issues. I just wanted to provide you with a quick heads up! Aside from that, great site!

  25. An outstanding share! I have just forwarded this onto a colleague who has been conducting a little research on this. And he actually ordered me lunch simply because I found it for him… lol. So allow me to reword this…. Thank YOU for the meal!! But yeah, thanx for spending some time to talk about this subject here on your internet site.

  26. I would like to thank you for the efforts you’ve put in writing this site. I really hope to see the same high-grade blog posts from you in the future as well. In fact, your creative writing abilities has motivated me to get my own, personal blog now 😉

  27. This is the right site for everyone who hopes to find out about this topic. You realize so much its almost hard to argue with you (not that I really would want to…HaHa). You certainly put a brand new spin on a topic that has been written about for decades. Wonderful stuff, just great!

  28. Right here is the perfect website for anybody who hopes to find out about this topic. You understand so much its almost tough to argue with you (not that I really will need to…HaHa). You definitely put a brand new spin on a subject that’s been written about for many years. Excellent stuff, just wonderful!

  29. I’m impressed, I must say. Seldom do I encounter a blog that’s both equally educative and entertaining, and let me tell you, you have hit the nail on the head. The problem is something which not enough men and women are speaking intelligently about. I’m very happy I stumbled across this in my search for something relating to this.

  30. I absolutely love your site.. Excellent colors & theme. Did you build this site yourself? Please reply back as I’m wanting to create my very own site and want to learn where you got this from or exactly what the theme is named. Cheers!

  31. An outstanding share! I’ve just forwarded this onto a coworker who was doing a little research on this. And he actually bought me dinner due to the fact that I discovered it for him… lol. So let me reword this…. Thanks for the meal!! But yeah, thanx for spending some time to talk about this matter here on your web page.

  32. A motivating discussion is definitely worth comment. There’s no doubt that that you ought to publish more on this issue, it might not be a taboo matter but typically people don’t discuss such subjects. To the next! Kind regards!!

  33. Aw, this was a truly great blog post. In suggestion I would like to place in writing like this in addition? taking some time and actual effort to make a great article? yet what can I claim? I put things off alot and never seem to obtain something done.

  34. Can I simply say what a comfort to find somebody who genuinely knows what they are discussing online. You definitely know how to bring a problem to light and make it important. A lot more people have to read this and understand this side of your story. It’s surprising you’re not more popular given that you definitely have the gift.

  35. After looking into a handful of the blog posts on your web site, I honestly like your technique of blogging. I saved it to my bookmark website list and will be checking back soon. Take a look at my website too and tell me how you feel.

  36. I blog quite often and I seriously thank you for your information. Your article has truly peaked my interest. I will book mark your website and keep checking for new information about once a week. I opted in for your Feed too.

  37. I was very pleased to find this web site. I want to to thank you for your time just for this wonderful read!! I definitely liked every part of it and I have you saved to fav to see new stuff in your web site.

  38. An impressive share! I’ve just forwarded this onto a friend who was conducting a little homework on this. And he in fact ordered me lunch due to the fact that I stumbled upon it for him… lol. So allow me to reword this…. Thank YOU for the meal!! But yeah, thanks for spending time to talk about this subject here on your internet site.

  39. Howdy! I could have sworn I’ve visited this website before but after browsing through a few of the posts I realized it’s new to me. Nonetheless, I’m certainly pleased I discovered it and I’ll be book-marking it and checking back frequently!

  40. I blog quite often and I genuinely appreciate your information. This great article has really peaked my interest. I am going to book mark your website and keep checking for new information about once a week. I subscribed to your Feed as well.

  41. You are so awesome! I don’t think I have read through anything like that before. So good to find someone with unique thoughts on this issue. Really.. thank you for starting this up. This web site is something that is needed on the internet, someone with a little originality!

  42. I’m amazed, I must say. Seldom do I encounter a blog that’s both equally educative and entertaining, and without a doubt, you have hit the nail on the head. The problem is an issue that too few men and women are speaking intelligently about. I’m very happy I found this in my search for something concerning this.

  43. Oh my goodness! Awesome article dude! Many thanks, However I am encountering problems with your RSS. I don’t know why I cannot join it. Is there anybody else getting the same RSS issues? Anyone that knows the solution will you kindly respond? Thanks!!

  44. Hi, I do believe your site may be having web browser compatibility issues. Whenever I take a look at your website in Safari, it looks fine but when opening in IE, it’s got some overlapping issues. I just wanted to give you a quick heads up! Besides that, excellent website!

  45. I’m pretty pleased to find this website. I wanted to thank you for your time just for this wonderful read!! I definitely really liked every little bit of it and i also have you book-marked to check out new stuff on your website.

  46. I was pretty pleased to uncover this website. I wanted to thank you for your time for this particularly wonderful read!! I definitely liked every part of it and I have you bookmarked to see new stuff in your web site.

  47. I have to thank you for the efforts you’ve put in writing this site. I really hope to see the same high-grade blog posts by you later on as well. In fact, your creative writing abilities has encouraged me to get my own blog now 😉

  48. An impressive share! I’ve just forwarded this onto a friend who had been conducting a little homework on this. And he in fact bought me lunch because I stumbled upon it for him… lol. So allow me to reword this…. Thanks for the meal!! But yeah, thanx for spending some time to talk about this subject here on your web page.

  49. This is a really good tip particularly to those fresh to the blogosphere. Simple but very precise information… Many thanks for sharing this one. A must read article!

  50. When I originally left a comment I seem to have clicked on the -Notify me when new comments are added- checkbox and now every time a comment is added I recieve four emails with the same comment. Is there an easy method you are able to remove me from that service? Kudos!

  51. I’m amazed, I must say. Rarely do I encounter a blog that’s both educative and interesting, and without a doubt, you have hit the nail on the head. The problem is something not enough folks are speaking intelligently about. I am very happy that I came across this in my search for something regarding this.

  52. Hi I am so delighted I found your blog page, I really found you
    by accident, while I was browsing on Askjeeve for something else, Anyways I am
    here now and would just like to say thanks for a incredible post and a all round entertaining blog (I also love the theme/design), I
    don’t have time to read through it all at the moment but I have book-marked it and also included your RSS feeds, so when I have time I
    will be back to read more, Please do keep up the excellent job.

  53. Hello there! This post couldn’t be written any better! Going through this article reminds me of my previous roommate! He always kept preaching about this. I’ll forward this article to him. Fairly certain he will have a very good read. Thank you for sharing!

  54. I blog often and I genuinely thank you for your information. Your article has really peaked my interest. I’m going to take a note of your blog and keep checking for new details about once a week. I opted in for your Feed too.

  55. I would like to thank you for the efforts you have put in writing this website. I really hope to view the same high-grade blog posts from you later on as well. In truth, your creative writing abilities has inspired me to get my own, personal site now 😉

  56. Oh my goodness! Amazing article dude! Thanks, However I am experiencing difficulties with your RSS. I don’t know the reason why I am unable to join it. Is there anybody having similar RSS issues? Anyone who knows the answer can you kindly respond? Thanks!!

  57. Nice post. I learn something new and challenging on sites I stumbleupon on a daily basis. It’s always exciting to read through articles from other writers and use a little something from their web sites.

  58. I have to thank you for the efforts you have put in writing this blog. I’m hoping to check out the same high-grade content from you in the future as well. In fact, your creative writing abilities has motivated me to get my very own website now 😉

  59. Nice post. I learn something totally new and challenging on websites I stumbleupon everyday. It’s always helpful to read articles from other authors and use something from other websites.

  60. Aw, this was an exceptionally nice post. Taking a few minutes and actual effort to produce a top notch article… but what can I say… I procrastinate a lot and don’t seem to get nearly anything done.

  61. I truly love your blog.. Pleasant colors & theme. Did you develop this website yourself? Please reply back as I’m hoping to create my very own website and want to find out where you got this from or exactly what the theme is called. Many thanks!

  62. A fascinating discussion is definitely worth comment. There’s no doubt that that you ought to publish more on this topic, it may not be a taboo matter but generally people don’t talk about such topics. To the next! Kind regards!!

  63. Hi, I do believe this is an excellent website. I stumbledupon it 😉 I’m going to return once again since I saved as a favorite it. Money and freedom is the best way to change, may you be rich and continue to help others.

  64. Greetings, I think your site may be having internet browser compatibility issues. When I take a look at your blog in Safari, it looks fine however, when opening in Internet Explorer, it’s got some overlapping issues. I simply wanted to give you a quick heads up! Apart from that, wonderful website!

  65. Can I just say what a comfort to find somebody that actually knows what they’re discussing on the net. You actually understand how to bring an issue to light and make it important. A lot more people have to read this and understand this side of the story. I was surprised that you aren’t more popular because you definitely have the gift.

  66. Can I simply just say what a relief to find a person that actually knows what they’re discussing on the internet. You definitely understand how to bring an issue to light and make it important. More and more people really need to check this out and understand this side of the story. It’s surprising you aren’t more popular because you certainly have the gift.

  67. Aw, this was a really good post. Taking the time and actual effort to generate a really good article… but what can I say… I put things off a whole lot and don’t seem to get nearly anything done.

  68. Having read this I believed it was really enlightening. I appreciate you finding the time and energy to put this content together. I once again find myself spending way too much time both reading and commenting. But so what, it was still worthwhile!

  69. I really love your site.. Excellent colors & theme. Did you make this site yourself? Please reply back as I’m wanting to create my own personal site and would love to learn where you got this from or exactly what the theme is named. Thank you!

  70. I blog often and I truly thank you for your information. This great article has truly peaked my interest. I am going to take a note of your blog and keep checking for new details about once a week. I subscribed to your RSS feed too.

  71. When I originally left a comment I appear to have clicked the -Notify me when new comments are added- checkbox and now each time a comment is added I recieve four emails with the same comment. Perhaps there is a means you can remove me from that service? Cheers!

  72. After going over a number of the blog articles on your site, I really appreciate your way of writing a blog. I saved as a favorite it to my bookmark site list and will be checking back in the near future. Please check out my website too and let me know your opinion.

  73. The next time I read a blog, Hopefully it does not disappoint me as much as this particular one. I mean, Yes, it was my choice to read through, but I actually believed you would have something interesting to say. All I hear is a bunch of moaning about something that you can fix if you weren’t too busy seeking attention.

  74. After I initially left a comment I appear to have clicked the -Notify me when new comments are added- checkbox and from now on every time a comment is added I receive four emails with the same comment. Perhaps there is an easy method you can remove me from that service? Thank you!

  75. The next time I read a blog, I hope that it doesn’t disappoint me as much as this one. I mean, I know it was my choice to read, but I genuinely thought you would probably have something useful to talk about. All I hear is a bunch of whining about something that you could possibly fix if you were not too busy looking for attention.

  76. Can I just say what a relief to find someone who actually knows what they are discussing on the net. You definitely know how to bring a problem to light and make it important. A lot more people have to check this out and understand this side of the story. I was surprised that you are not more popular since you surely possess the gift.

  77. I was more than happy to find this great site. I want to to thank you for ones time due to this fantastic read!! I definitely liked every little bit of it and i also have you saved to fav to look at new stuff in your web site.

  78. Hello! I could have sworn I’ve been to your blog before but after browsing through a few of the posts I realized it’s new to me.

    Nonetheless, I’m certainly delighted I stumbled upon it and I’ll be
    book-marking it and checking back regularly!

  79. This is the right blog for everyone who would like to understand this topic. You understand a whole lot its almost hard to argue with you (not that I actually would want to…HaHa). You definitely put a new spin on a topic that’s been discussed for many years. Wonderful stuff, just great!

  80. Having read this I believed it was rather informative. I appreciate you taking the time and energy to put this information together. I once again find myself personally spending way too much time both reading and leaving comments. But so what, it was still worthwhile!

  81. Right here is the right webpage for anybody who really wants to understand this topic. You understand a whole lot its almost tough to argue with you (not that I personally would want to…HaHa). You certainly put a fresh spin on a subject that’s been discussed for a long time. Excellent stuff, just great!

  82. An impressive share! I have just forwarded this onto a co-worker who had been conducting a little research on this. And he actually bought me dinner simply because I discovered it for him… lol. So allow me to reword this…. Thank YOU for the meal!! But yeah, thanks for spending time to discuss this subject here on your website.

  83. Hi, I believe your site might be having web browser compatibility problems. Whenever I look at your website in Safari, it looks fine however, if opening in IE, it has some overlapping issues. I simply wanted to provide you with a quick heads up! Apart from that, great blog!

  84. I’m amazed, I must say. Rarely do I come across a blog that’s both educative and engaging, and without a doubt, you have hit the nail on the head. The problem is an issue that not enough men and women are speaking intelligently about. Now i’m very happy that I found this in my hunt for something regarding this.

  85. Nice post. I learn something totally new and challenging on blogs I stumbleupon on a daily basis. It’s always interesting to read through articles from other writers and use something from their web sites.

  86. Howdy! This post couldn’t be written any better! Going through this post reminds me of my previous roommate! He constantly kept preaching about this. I most certainly will send this post to him. Fairly certain he will have a very good read. I appreciate you for sharing!

  87. I blog quite often and I really appreciate your content. The article has truly peaked my interest. I am going to take a note of your blog and keep checking for new information about once a week. I opted in for your Feed too.

  88. Having read this I believed it was extremely enlightening. I appreciate you finding the time and effort to put this information together. I once again find myself spending a significant amount of time both reading and commenting. But so what, it was still worthwhile!

  89. I blog often and I truly thank you for your information. This great article has really peaked my interest. I am going to book mark your site and keep checking for new details about once per week. I opted in for your RSS feed as well.

  90. The very next time I read a blog, Hopefully it doesn’t fail me as much as this particular one. I mean, Yes, it was my choice to read, but I really thought you’d have something interesting to talk about. All I hear is a bunch of crying about something that you could possibly fix if you were not too busy looking for attention.

  91. The very next time I read a blog, I hope that it won’t fail me just as much as this particular one. After all, Yes, it was my choice to read, nonetheless I actually thought you would have something helpful to talk about. All I hear is a bunch of whining about something that you could possibly fix if you weren’t too busy searching for attention.

  92. Aw, this was a really nice post. Taking the time and actual effort to make a top notch article… but what can I say… I put things off a whole lot and don’t manage to get anything done.

  93. This is the perfect site for anybody who wishes to find out about this topic. You realize so much its almost hard to argue with you (not that I personally will need to…HaHa). You definitely put a new spin on a subject that has been written about for decades. Excellent stuff, just excellent!

  94. Having read this I thought it was very enlightening. I appreciate you finding the time and energy to put this informative article together. I once again find myself personally spending a significant amount of time both reading and leaving comments. But so what, it was still worth it!

  95. An outstanding share! I have just forwarded this onto a friend who has been doing a little research on this. And he actually bought me dinner because I found it for him… lol. So allow me to reword this…. Thank YOU for the meal!! But yeah, thanx for spending time to discuss this subject here on your web site.

  96. An impressive share! I have just forwarded this onto a co-worker who was conducting a little homework on this. And he in fact bought me dinner simply because I found it for him… lol. So allow me to reword this…. Thank YOU for the meal!! But yeah, thanks for spending some time to discuss this subject here on your web site.

  97. When I initially commented I seem to have clicked on the -Notify me when new comments are added- checkbox and from now on each time a comment is added I recieve four emails with the exact same comment. Is there a way you can remove me from that service? Kudos!

  98. Hi there, I believe your blog may be having browser compatibility issues. Whenever I take a look at your site in Safari, it looks fine but when opening in I.E., it’s got some overlapping issues. I just wanted to give you a quick heads up! Apart from that, great site!

  99. This is the perfect site for anyone who wishes to understand this topic. You understand so much its almost tough to argue with you (not that I personally will need to…HaHa). You certainly put a fresh spin on a subject that has been written about for many years. Excellent stuff, just wonderful!

  100. I blog often and I genuinely thank you for your content. The article has truly peaked my interest. I will bookmark your website and keep checking for new information about once per week. I opted in for your RSS feed too.

  101. An impressive share! I have just forwarded this onto a co-worker who had been conducting a little homework on this. And he in fact bought me dinner due to the fact that I stumbled upon it for him… lol. So allow me to reword this…. Thank YOU for the meal!! But yeah, thanx for spending the time to discuss this issue here on your web site.

  102. Oh my goodness! Amazing article dude! Thanks, However I am going through troubles with your RSS. I don’t know why I cannot subscribe to it. Is there anyone else getting the same RSS issues? Anyone who knows the solution can you kindly respond? Thanx!!

  103. Hi there! I simply want to offer you a big thumbs up for the great info you have got right here on this post. I will be coming back to your website for more soon.

  104. I’d like to thank you for the efforts you have put in writing this site. I really hope to see the same high-grade content by you later on as well. In truth, your creative writing abilities has motivated me to get my very own website now 😉

  105. Can I just say what a comfort to discover someone who really understands what they are talking about over the internet. You certainly understand how to bring a problem to light and make it important. More and more people should check this out and understand this side of your story. It’s surprising you are not more popular since you certainly have the gift.

  106. Right here is the right blog for anyone who would like to understand this topic. You know a whole lot its almost tough to argue with you (not that I actually will need to…HaHa). You certainly put a fresh spin on a subject that has been discussed for a long time. Great stuff, just wonderful!

  107. Oh my goodness! Awesome article dude! Thanks, However I am going through difficulties with your RSS. I don’t know the reason why I cannot join it. Is there anybody getting similar RSS problems? Anybody who knows the answer can you kindly respond? Thanx!!

  108. Hello there! This blog post couldn’t be written any better! Going through this article reminds me of my previous roommate! He continually kept talking about this. I’ll send this post to him. Pretty sure he’ll have a great read. Thank you for sharing!

  109. I truly love your blog.. Excellent colors & theme. Did you make this site yourself? Please reply back as I’m trying to create my own personal blog and want to find out where you got this from or exactly what the theme is named. Kudos!

  110. An outstanding share! I’ve just forwarded this onto a colleague who was conducting a little research on this. And he in fact bought me breakfast because I found it for him… lol. So allow me to reword this…. Thank YOU for the meal!! But yeah, thanks for spending some time to talk about this issue here on your blog.

  111. I seriously love your site.. Great colors & theme. Did you develop this site yourself? Please reply back as I’m looking to create my own site and want to find out where you got this from or just what the theme is called. Kudos!

  112. Hello there! This post couldn’t be written any better! Going through this article reminds me of my previous roommate! He always kept talking about this. I most certainly will send this post to him. Pretty sure he’s going to have a good read. Thank you for sharing!

  113. Right here is the right website for everyone who hopes to understand this topic. You realize so much its almost tough to argue with you (not that I actually would want to…HaHa). You certainly put a brand new spin on a topic that has been written about for years. Wonderful stuff, just wonderful!

  114. May I simply say what a relief to uncover an individual who actually understands what they are talking about on the internet. You certainly understand how to bring a problem to light and make it important. More people need to read this and understand this side of your story. I was surprised that you’re not more popular given that you surely have the gift.

  115. Hi, I do think this is an excellent website. I stumbledupon it 😉 I will return once again since i have book marked it. Money and freedom is the best way to change, may you be rich and continue to guide others.

  116. Next time I read a blog, I hope that it doesn’t fail me as much as this one. After all, Yes, it was my choice to read, but I actually thought you would have something useful to say. All I hear is a bunch of crying about something you could possibly fix if you were not too busy looking for attention.

  117. I’m impressed, I must say. Rarely do I encounter a blog that’s equally educative and entertaining, and without a doubt, you’ve hit the nail on the head. The problem is an issue that too few men and women are speaking intelligently about. I am very happy that I stumbled across this in my hunt for something relating to this.

댓글 남기기