Vi på Cygni som gillar IntelliJ måste förstås kontra när vi ser sådana här bra Eclipse-tips på bloggen.

Jag kom därvidlag att tänka på s.k. Live Templates i IntelliJ. De är en slags kortkommandon som är kopplade till parametriserade kodsnuttar.

Om man trycker Ctrl+J när man är i en Java-fil, så får man se något i den här stilen:

Listan över Templates

Man kan begränsa listan genom att skriva en del av ett kortkommando (t.ex. ”it”) innan man trycker Ctrl+J. Efter ett tag lär man sig förstås kortkommandona utantill – då är det bara att skriva ”itar” eller vad det nu är och sedan trycka Ctrl+J så får man sin kodsnutt.

Detta vore inte så märkvärdigt om det inte vore för det faktum att man kan skapa sina egna Live Templates.

Skapa en egen Live Template

När man använder log4j så tenderar man att skriva saker av typen

private static final Logger logger = 
Logger.getLogger(MyClass.class);

om och om igen i olika filer. Så här man man skapa sin egen Live Template för att generera denna kodsnutt.

  • Gå in i Settings och välj Live Templates.
  • Klicka på Add.
  • Stoppa in koden, du kan kopiera den nedan.
private static final Logger logger = 
Logger.getLogger($CLASSNAME$.class);

Som du ser så innehåller koden en variabel CLASSNAME. För att definiera vad den betyder så trycker man på Edit Variable-knappen. Där väljer man en funktion som skall köras för att populera variablen. I det här fallet vill vi ha funktionen className():

Gör en lyx-template

Vill man vara ännu fiffigare så kan man skapa en annan template som genererar själva anropen till loggern också. Om strängen man loggar är tung att generera (t.ex. om en massa egna toString anropas) kan det som bekant vara bra att lägga en if-sats runt loggningen så att den inte gör något i onödan:

if (logger.isDebugEnabled()) {
   logger.debug(...);
}

Detta kan man få till med en Template som ser ut så här

if (logger.isDebugEnabled()) { 
   logger.debug($END$);
}

Kalla den t.ex. ”dlog”, för debug-logg.

Notera att man inte behöver definiera vad END skall innebära. Det är en inbyggd variabel som betyder ”Sätt markören här när du är klar”.

Lycka till!