日志框架、Lombok的那些事

diary_report.jpg

What did you do today

  • 日志門面有:jcl(Apache Commons Logging), slf4j,
    jboss-logging(不是服務(wù)大眾的)枯怖。日志實現(xiàn)有:log4j, log4j2,logback,jul(java.util.logging)能曾。公司的日志框架選型是slf4j + log4j2《认酰現(xiàn)在捋一捋他們之間的關(guān)系寿冕,進行jar包總結(jié)。

    • log4j1 : log4j.jar有l(wèi)og4j的全部內(nèi)容驼唱。
    • log4j2:log4j-api包含log4j2定義的api,log4j-core是log4j2上述api的實現(xiàn)玫恳。
    • logback:logback-core是logback的核心包,logback-classic是logback實現(xiàn)了slf4j的api京办。
    • jcl: commons-logging包含jcl的全部原生內(nèi)容,log4j-jcl是jcl到log4j2的橋梁惭婿,jcl-over-slf4j是jcl到slf4j的橋梁。
  • 當我們有slf4j轉(zhuǎn)向某一個實現(xiàn)的日志框架需求時該怎么做呢审孽?如果使用slf4j的api進行編程浑娜,底層需要使用log4j1來進行實際的日志輸出,這時候就需要slf4j-log4j12來進行橋接了筋遭。類似的jar還有很多暴拄。

    • slf4j-jdk14:slf4j到j(luò)ul的橋梁。
    • slf4j-log4j12: slf4j到log4j的橋梁编饺。
    • log4j-slf4j-impl: slf4j到log4j2的橋梁。
    • logback-classic: slf4j到logback的橋梁透且。
    • slf4j-jcl: slf4j到j(luò)cl的橋梁。
  • 如果某一個實際的日志框架轉(zhuǎn)向slf4j秽誊。

    • jul-to-slf4j:jul適配slf4j。
    • log4j-over-slf4j:log4j2適配slf4j锅论。
    • jcl-over-slf4j:apache common logging適配slf4j。
image.png
  • Lombok插件的使用怒坯,我們首先要安裝Lombok插件,然后在pom配置lombok的maven剔猿。
    這里我只會記錄一些我生疏的注解,那些常用的注解不再重復(fù)了嬉荆。具體的Lombok的操作和常用注解,請看這篇文章IDEA入門(1)--lombok和Junit generator2插件的運用

    image.png

    • @RequiredArgsConstructor:一般配合@NonNull注解使用弄慰,會自動生成一個構(gòu)造方法蝶锋,里面的參數(shù)列表為被@NonNull注解的成員變量。示例:我們創(chuàng)建Coder對象的時候扳缕,可選擇這個構(gòu)造器。 Coder coder1 = new Coder("cmazxiaoma", "root");

    • @FieldDefaults(level = AccessLevel.PRIVATE):表示所有的屬性默認訪問修飾符都是PRIVATE躯舔。如果屬性的訪問修飾符有private驴剔,public丧失,protected的話,我們可以單獨具體到屬性上進行注解布讹,就不用注解在類上了琳拭。

    • @Accessors(fluent = true):代表我們創(chuàng)建對象的時候白嘁,可以支持流式風格。示例:Coder coder = new Coder().userName("cmazxiaoma").password("root").age(21); userName()和password()都是返回當前類本身絮缅,跟Java建造者設(shè)計模式是一樣的。


      image.png
    • @UtilityClass:使用該注解呼股,會為當前類創(chuàng)建一個私有無參構(gòu)造方法,不可實例化屎开,代表這是一個工具類。

    • @Slf4j:日志注解奄抽,使用該注解會創(chuàng)建一個log屬性,我們可以進行相關(guān)的日志處理逞度。相關(guān)類似的日志注解還有@Log,@Log4j档泽,@Log4j2,@CommonsLog揖赴。

    • @NonNull:我們可以預(yù)防空指針。使用Lombok的好處燥滑,看下面的代碼對比顯而易見。@NonNull為我們節(jié)省了2行代碼赃蛛。

@UtilityClass
@Slf4j
public class CodeUntils {

    public static void hello() {
        log.info("hello");
    }

    public static void printUserNameAsNonNull(@NonNull Coder coder) {
        log.info("userName = {}", coder.userName());
    }

    public static void printUserName(Coder coder) {
        if (coder == null) {
            throw new NullPointerException("coder");
        }
        log.info("userName = {}", coder.userName());
    }
}
  • MySQL命令, show processlist可以查看線程的執(zhí)行狀態(tài)呕臂。Sleep狀態(tài)通常代表資源未釋放肪跋,如果是通過連接池,sleep狀態(tài)應(yīng)該恒定在一定數(shù)量內(nèi)。

  • MAVEN命令, mvn clean package -Dmaven.test.skip=true。對項目進行編譯打包的時候跳過單元測試易桃。

  • MAVEN管理褥琐,maven默認會把src/main/resources路徑下的所有配置文件和src/main/java下的所有java文件打包到target文件夾下的classes下面晤郑,但是我們也會在src/main/java下放置一些mapper.xml配置文件。如果不做相關(guān)的處理造寝,那我們打包后的項目可能會找不到這些必要的資源,所以要進行如下配置诫龙。

      <build>
        <!--War built name-->
        <finalName>cmazxiaoma</finalName>
        <resources>

            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>*</include>
                    <include>*/*</include>
                </includes>
                <filtering>true</filtering>
            </resource>

            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>

        </resources>
    </build>

What to do tomorrow

  • 明天主要看一下Spring Security相關(guān)的配置代碼。

Summary

感覺自己的效率很低签赃,看代碼的速度很慢,真的是菜雞一只歹嘹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末孔庭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子圆到,更是在濱河造成了極大的恐慌怎抛,老刑警劉巖芽淡,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吐绵,居然都是意外死亡,警方通過查閱死者的電腦和手機己单,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纹笼,“玉大人,你說我怎么就攤上這事〖眩” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵篷扩,是天一觀的道長茉盏。 經(jīng)常有香客問我,道長鸠姨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任讶迁,我火速辦了婚禮,結(jié)果婚禮上巍糯,老公的妹妹穿的比我還像新娘。我一直安慰自己鳞贷,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布惰聂。 她就那樣靜靜地躺著,像睡著了一般咱筛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上迅箩,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音拐揭,去河邊找鬼奕塑。 笑死,一個胖子當著我的面吹牛龄砰,可吹牛的內(nèi)容都是我干的盟猖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼反镇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了歹茶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤辆亏,失蹤者是張志新(化名)和其女友劉穎鳖目,沒想到半個月后缤弦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡碍沐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了累提。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡朽褪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出无虚,到底是詐尸還是另有隱情,我是刑警寧澤友题,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站度宦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏符糊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一呛凶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦模闲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽橄浓。三九已至,卻和暖如春荸实,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背准给。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留重抖,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓畔规,卻偏偏與公主長得像,于是被迫代替她去往敵國和親叁扫。 傳聞我的和親對象是個殘疾皇子延欠,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容