Forming product of function of prime factors

Given a list of numbers each containing 2 prime factors, I wish to make a list of the products of the logs of each factor. For example, given

L = {4,6,9}, I would like to form P = {Log[2]*Log[2],Log[2]*Log[3],Log[3]*Log[3]}.

FactorInteger seems like a questionable route since it would require some work to distinguish squares from numbers with two distinct prime factors.

Any suggestions? Thank you.

-
Warning: Trying to force Mma to display its results in the way you like them is usually difficult and doesn't pay off –  belisarius Jun 13 '13 at 16:47
@belisarius: If you are suggesting that the best way might be a short program then I can accept that. –  daniel Jun 13 '13 at 16:56
I do not see how this can be done without, in effect, factoring the number. –  Daniel Lichtblau Jun 13 '13 at 18:24
@DanielLichtblau: No, that has to be done. –  daniel Jun 14 '13 at 0:48

1 Answer

You could try a couple of rules, but the heads of the elements in the output list will mix Times and HoldForm...

Map[FactorInteger,{4,6,9,15,25,33,49,51}] /.
{{{p_,2}}->HoldForm[Log[p]*Log[p]],
{{p_,_},{q_,_}}->Log[p]*Log[q]}

-
Alternatively: {4, 6, 9, 15, 25, 33, 49, 51} /. n_Integer /; PrimeOmega[n] == 2 :> Times @@ Log[Flatten[ConstantArray @@@ FactorInteger[n]]] –  Ｊ. Ｍ. Jun 13 '13 at 18:23
Actually this was better than what I had anticipated, thanks. –  daniel Jun 13 '13 at 23:52