Just in case it's useful to somebody, my current approach is:
// Debug PRinting with LiNefeed and maybe Flash strings or 2nd mode param
#ifdef DEBUG
#define DPR(x) Serial.print(x)
#define DPR2(x,m) Serial.print(x,m)
#define DPRLIN() Serial.println()
#define DPRLN(x) Serial.println(x)
#define DPRLN2(x,m) Serial.println(x,m)
// saving string in Flash ProgMem
#define DPRF(x) Serial.print(F(x))
#define DPRLNF(x) Serial.println(F(x))
#else
#define DPR(x)
#define DPR2(x,m)
#define DPRLIN()
#define DPRLN(x)
#define DPRLN2(x,m)
#define DPRF(x)
#define DPRLNF(x)
#endif
This allows substitute for println() with no args, and for print(val, HEX) type modes as well. I got tired of typing the extra F(...) so added macros to incorporate that too.
You can make this into a library to include as a .h file - as a note, you still need a corresponding .c file even if empty.